`
abc20899
  • 浏览: 932571 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于android Http访问,上传,用了三个方法

 
阅读更多
import java.io.BufferedReader;  
04.import java.io.DataOutputStream;  
05.import java.io.File;  
06.import java.io.FileInputStream;  
07.import java.io.InputStream;  
08.import java.io.InputStreamReader;  
09.import java.net.HttpURLConnection;  
10.import java.net.URL;  
11.import java.util.Map;  
12.import java.util.Random;  
13.import java.util.concurrent.TimeUnit;  
14.  
15.import org.apache.http.client.HttpClient;  
16.import org.apache.http.impl.client.DefaultHttpClient;  
17.  
18.import com.bingo.BingoApp;  
19.public class Communication {  
20.      
21.      
22.    /** 
23.     * @param 只发送普通数据,调用此方法 
24.     * @param urlString 对应的Php 页面 
25.     * @param params 需要发送的相关数据 包括调用的方法 
26.     * @return 
27.     */  
28.    public String communication(String urlString,Map<String, String> params){  
29.          
30.        HttpClient client = new DefaultHttpClient();  
31.          
32.          
33.          
34.        client.getConnectionManager().closeIdleConnections(20, TimeUnit.SECONDS);//20秒   
35.          
36.        String result="";  
37.          
38.        String uploadUrl=new BingoApp().URLIN+"/";//new BingoApp().URLIN 是我定义的上传URL   
39.        //http://192.168.10.9/bingo/Server/code   
40.        String MULTIPART_FORM_DATA = "multipart/form-data";   
41.        String BOUNDARY = "---------7d4a6d158c9"; //数据分隔线   
42.          
43.        if (!urlString.equals("")) {  
44.            uploadUrl = uploadUrl+urlString;  
45.          
46.          
47.        try {  
48.            URL url = new URL(uploadUrl);    
49.            HttpURLConnection conn = (HttpURLConnection) url.openConnection();    
50.            conn.setDoInput(true);//允许输入     
51.            conn.setDoOutput(true);//允许输出     
52.            conn.setUseCaches(false);//不使用Cache     
53.            conn.setConnectTimeout(6000);// 6秒钟连接超时   
54.            conn.setReadTimeout(25000);// 25秒钟读数据超时   
55.            conn.setRequestMethod("POST");              
56.            conn.setRequestProperty("Connection", "Keep-Alive");    
57.            conn.setRequestProperty("Charset", "UTF-8");    
58.            conn.setRequestProperty("Content-Type", MULTIPART_FORM_DATA + "; boundary=" + BOUNDARY);  
59.              
60.            
61.            StringBuilder sb = new StringBuilder();    
62.                
63.            //上传的表单参数部分,格式请参考文章     
64.            for (Map.Entry<String, String> entry : params.entrySet()) {//构建表单字段内容     
65.                sb.append("--");    
66.                sb.append(BOUNDARY);    
67.                sb.append("\r\n");    
68.                sb.append("Content-Disposition: form-data; name=\""+ entry.getKey() + "\"\r\n\r\n");    
69.                sb.append(entry.getValue());    
70.                sb.append("\r\n");    
71.            }    
72.  
73.              
74.            DataOutputStream dos = new DataOutputStream(conn.getOutputStream());  
75.            dos.write(sb.toString().getBytes());  
76.            dos.writeBytes("--" + BOUNDARY + "--\r\n");  
77.              dos.flush();  
78.  
79.              InputStream is = conn.getInputStream();  
80.              InputStreamReader isr = new InputStreamReader(is, "utf-8");  
81.              BufferedReader br = new BufferedReader(isr);  
82.              result = br.readLine();  
83.             
84.                
85.        }catch (Exception e) {  
86.            result = "{\"ret\":\"898\"}";  
87.        }  
88.    }  
89.        return result;  
90.          
91.    }  
92.      
93.    /** 
94.     * @param 只发送普通数据,调用此方法 
95.     * @param urlString 对应的Php 页面  
96.     * @param params 需要发送的相关数据 包括调用的方法 
97.     * @paramimage 图片字节数组或者文件字节数组 
98.     * @paramimg 图片名称 
99.     * @return  Json  
100.     */  
101.    public String communication01(String urlString,Map<String, Object> params,byte[] image ,String img){  
102.        String result="";  
103.          
104.        String end = "\r\n";          
105.        String uploadUrl=new BingoApp().URLIN+"/";//new BingoApp().URLIN 是我定义的上传URL   
106.        String MULTIPART_FORM_DATA = "multipart/form-data";   
107.        String BOUNDARY = "---------7d4a6d158c9"; //数据分隔线   
108.        String imguri ="";  
109.        Random random = new Random();  
110.        int temp = random.nextInt();  
111.        imguri = temp+ "sdfse"+".jpg";  
112.        if (!urlString.equals("")) {  
113.            uploadUrl = uploadUrl+urlString;  
114.          
115.        try {  
116.            URL url = new URL(uploadUrl);    
117.            HttpURLConnection conn = (HttpURLConnection) url.openConnection();    
118.            conn.setDoInput(true);//允许输入     
119.            conn.setDoOutput(true);//允许输出     
120.            conn.setUseCaches(false);//不使用Cache     
121.            conn.setConnectTimeout(6000);// 6秒钟连接超时   
122.            conn.setReadTimeout(6000);// 6秒钟读数据超时   
123.            conn.setRequestMethod("POST");              
124.            conn.setRequestProperty("Connection", "Keep-Alive");    
125.            conn.setRequestProperty("Charset", "UTF-8");    
126.            conn.setRequestProperty("Content-Type", MULTIPART_FORM_DATA + "; boundary=" + BOUNDARY);  
127.              
128.            StringBuilder sb = new StringBuilder();    
129.                
130.            //上传的表单参数部分,格式请参考文章     
131.            for (Map.Entry<String, Object> entry : params.entrySet()) {//构建表单字段内容     
132.                sb.append("--");    
133.                sb.append(BOUNDARY);    
134.                sb.append("\r\n");    
135.                sb.append("Content-Disposition: form-data; name=\""+ entry.getKey() + "\"\r\n\r\n");    
136.                sb.append(entry.getValue());    
137.                sb.append("\r\n");    
138.            }    
139.  
140.            sb.append("--");    
141.            sb.append(BOUNDARY);    
142.            sb.append("\r\n");    
143.  
144.            DataOutputStream dos = new DataOutputStream(conn.getOutputStream());  
145.            dos.write(sb.toString().getBytes());  
146.              
147.            if (!imguri.equals("")&&!imguri.equals(null)) {  
148.                 dos.writeBytes("Content-Disposition: form-data; name=\""+img+"\"; filename=\"" + imguri + "\"" + "\r\n"+"Content-Type: image/jpeg\r\n\r\n");  
149.                   
150.                 dos.write(image,0,image.length);  
151.                  
152.                  dos.writeBytes(end);  
153.                   
154.              
155.                dos.writeBytes("--" + BOUNDARY + "--\r\n");  
156.              dos.flush();  
157.  
158.              InputStream is = conn.getInputStream();  
159.              InputStreamReader isr = new InputStreamReader(is, "utf-8");  
160.              BufferedReader br = new BufferedReader(isr);  
161.              result = br.readLine();  
162.           }   
163.        }catch (Exception e) {  
164.            result = "{\"ret\":\"898\"}";  
165.        }  
166.    }  
167.        return result;  
168.          
169.    }  
170.      
171.      
172.    /** 
173.     * @param 只发送普通数据,调用此方法 
174.     * @param urlString 对应的Php 页面 
175.     * @param params 需要发送的相关数据 包括调用的方法 
176.     * @param imageuri 图片或文件手机上的地址 如:sdcard/photo/123.jpg 
177.     * @param img 图片名称 
178.     * @return Json 
179.     */  
180.    public String communication02(String urlString,Map<String, Object> params,String  imageuri ,String img){  
181.        String result="";  
182.          
183.        String end = "\r\n";          
184.        String uploadUrl=new BingoApp().URLIN+"/";//new BingoApp().URLIN 是我定义的上传URL   
185.        String MULTIPART_FORM_DATA = "multipart/form-data";   
186.        String BOUNDARY = "---------7d4a6d158c9"; //数据分隔线   
187.        String imguri ="";  
188.        if (!imageuri.equals("")) {  
189.            imguri = imageuri.substring(imageuri.lastIndexOf("/") + 1);//获得图片或文件名称   
190.        }  
191.          
192.          
193.          
194.          
195.        if (!urlString.equals("")) {  
196.            uploadUrl = uploadUrl+urlString;  
197.          
198.          
199.        try {  
200.            URL url = new URL(uploadUrl);    
201.            HttpURLConnection conn = (HttpURLConnection) url.openConnection();    
202.            conn.setDoInput(true);//允许输入     
203.            conn.setDoOutput(true);//允许输出     
204.            conn.setUseCaches(false);//不使用Cache     
205.            conn.setConnectTimeout(6000);// 6秒钟连接超时   
206.            conn.setReadTimeout(6000);// 6秒钟读数据超时   
207.            conn.setRequestMethod("POST");              
208.            conn.setRequestProperty("Connection", "Keep-Alive");    
209.            conn.setRequestProperty("Charset", "UTF-8");    
210.            conn.setRequestProperty("Content-Type", MULTIPART_FORM_DATA + "; boundary=" + BOUNDARY);  
211.              
212.            StringBuilder sb = new StringBuilder();    
213.                
214.            //上传的表单参数部分,格式请参考文章     
215.            for (Map.Entry<String, Object> entry : params.entrySet()) {//构建表单字段内容     
216.                sb.append("--");    
217.                sb.append(BOUNDARY);    
218.                sb.append("\r\n");    
219.                sb.append("Content-Disposition: form-data; name=\""+ entry.getKey() + "\"\r\n\r\n");    
220.                sb.append(entry.getValue());    
221.                sb.append("\r\n");    
222.            }    
223.  
224.            sb.append("--");    
225.            sb.append(BOUNDARY);    
226.            sb.append("\r\n");    
227.  
228.            DataOutputStream dos = new DataOutputStream(conn.getOutputStream());  
229.            dos.write(sb.toString().getBytes());  
230.              
231.            if (!imageuri.equals("")&&!imageuri.equals(null)) {  
232.                 dos.writeBytes("Content-Disposition: form-data; name=\""+img+"\"; filename=\"" + imguri + "\"" + "\r\n"+"Content-Type: image/jpeg\r\n\r\n");  
233.                  FileInputStream fis = new FileInputStream(imageuri);  
234.                  byte[] buffer = new byte[1024]; // 8k   
235.                  int count = 0;  
236.                  while ((count = fis.read(buffer)) != -1)  
237.                  {  
238.                    dos.write(buffer, 0, count);  
239.                  }  
240.                  dos.writeBytes(end);  
241.                  fis.close();  
242.            }  
243.                dos.writeBytes("--" + BOUNDARY + "--\r\n");  
244.              dos.flush();  
245.  
246.              InputStream is = conn.getInputStream();  
247.              InputStreamReader isr = new InputStreamReader(is, "utf-8");  
248.              BufferedReader br = new BufferedReader(isr);  
249.              result = br.readLine();  
250.              
251.        }catch (Exception e) {  
252.            result = "{\"ret\":\"898\"}";  
253.        }  
254.    }  
255.        return result;  
256.          
257.    }  
258.      
259.      
260.}  
分享到:
评论

相关推荐

    Android手机访问服务器的一种数据交互方法.pptx

    Android手机访问服务器的方法可以分为三个步骤:打开服务器端口、传输数据和接收数据。在这三个步骤中,每一步都非常重要,需要细心处理以确保数据交互的正确性和安全性。 二、背景 Android开发环境包括Android ...

    Android文件上传,文件选择器,多选

    综上所述,实现Android的文件上传和多选、单选文件功能涉及到了文件选择器的定制、文件操作、网络通信等多个方面。通过合理的设计和优化,可以提供高效、安全的文件操作体验。在实际开发中,要不断迭代和优化,确保...

    Android视频压缩并且上传

    以上就是从相册选取视频、压缩视频并上传到服务器的Android开发中涉及的主要知识点,涵盖了多媒体文件访问、解码、压缩、网络传输等多个方面。在实际开发中,要根据具体需求和平台特性进行适当调整和优化。

    Android_SDK访问权限大全

    ### Android SDK 访问权限详解 #### 一、概述 Android SDK访问权限是开发者在开发Android应用程序时必须理解和掌握的重要概念。为了保护用户隐私及设备安全,Android系统通过权限管理机制来控制应用对设备功能及...

    android客户端上传数据方式

    本篇文章将详细探讨Android客户端如何使用不同的方法上传数据,以及涉及到的关键技术,如JSON和网络请求处理。 首先,我们关注的是两种主要的HTTP请求方式:GET和POST。在Android中,通常使用HttpURLConnection或者...

    android 上传附件 http

    在Android中,我们可以使用`HttpURLConnection`或者第三方库如`OkHttp`来执行这样的请求。这里我们主要介绍`OkHttp`,因为它更易于使用且性能出色。 1. **集成OkHttp库** 在`build.gradle`文件中添加依赖: ```...

    android通过调用系统录音或者选择现有录音实现录音上传

    通常使用HTTP或HTTPS协议将音频文件上传到Web服务器。可以使用Android的HttpURLConnection或者第三方库如OkHttp。在请求中设置合适的HTTP头,如Content-Type(音频文件的MIME类型),并将音频文件的二进制数据写入...

    android摄像头拍照上传到服务器

    在Android平台上,开发一款应用程序允许用户使用内置摄像头拍照并上传照片至PHP服务器是一个常见的需求。这个过程涉及到Android的多媒体API、文件操作以及网络通信技术。下面将详细解释这些知识点。 1. **Android...

    Android 手机文件上传示例.zip

    在Android平台上,文件上传是一个常见的任务,特别是在移动应用开发中,如社交应用、云存储服务等,都需要用户能够上传图片、文档等数据。本示例将重点讲解如何在Android手机上实现文件上传功能。 首先,我们需要...

    手机订餐系统(Android访问互联网资源)

    Android提供多种方式实现网络访问,如HttpClient(已废弃,但仍然可用)、HttpURLConnection和第三方库如Retrofit或Volley。这些工具可以帮助开发者构建网络请求,处理响应,以及进行异步操作以避免阻塞UI线程。 8....

    android录音上传到服务器,上传使用AsyncTask异步任务.zip

    它有三个泛型参数:`Params`代表输入参数类型,`Progress`代表后台处理过程中的进度更新类型,`Result`代表后台处理完成后返回的结果类型。`doInBackground()`方法用于执行后台任务,`onPostExecute()`方法用于处理...

    android 通过ftp协议访问服务器上的目录,通过listview 展示

    本项目“android 通过ftp协议访问服务器上的目录,通过listview 展示”就是实现了这样一个功能,允许用户浏览服务器上的目录并展示在ListView中。下面我们将详细讲解这个过程中的关键知识点。 1. FTP协议:FTP是...

    android通过HTTP协议上传文件至远程服务器

    本文将详细讲解如何使用HTTP协议在Android客户端实现文件上传,并涉及服务器端的相关设置。 首先,我们需要了解HTTP协议。HTTP(超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议,是互联网...

    android 录音 及上传录音

    总结,Android录音及上传录音涉及到`MediaRecorder`类的使用、文件存储、权限管理以及网络请求等多个知识点。在实际开发中,开发者需根据项目需求灵活运用这些技术,并考虑用户体验、性能优化等方面。同时,随着...

    Android文件上传+服务器

    在Android中,我们通常使用`HttpURLConnection`或第三方库如`OkHttp`来实现这一过程。 2. **Multipart/form-data** Android上传文件通常涉及`Multipart/form-data`编码方式,这是HTTP协议中用于处理多部分数据的一...

    Android上传图片到服务器

    可以使用`BitmapFactory`加载图片,然后用`Bitmap.compress()`方法将其压缩。 接着,我们要处理网络请求。在Android中,HTTP请求通常通过HttpURLConnection或者第三方库如OkHttp、Volley等实现。这里我们以OkHttp为...

    Android 仿微信选择图片,上传图片

    可以使用Bitmap的`compress()`方法,选择合适的格式(如JPEG)和质量,或者使用第三方库如 Glide 或 Picasso 进行优化。 5. **多图选择**: 对于多张图片的选择,可以使用`Intent.createChooser()`创建一个多选择...

    android HTTP通信例子(json数据传递)

    总结起来,这个Android HTTP通信例子展示了如何在Android应用中使用HTTP协议与Java Web服务器进行交互,包括JSON数据的传递、文件的上传和下载,以及错误处理等关键环节。理解并掌握这些技术对于开发功能丰富的...

    安卓Android源码——android拍摄视频并上传到PHP服务器.rar

    6. **网络上传**:上传视频到PHP服务器通常使用HTTP或HTTPS协议。Android提供了HttpURLConnection或第三方库如Volley、Retrofit等进行网络请求。在这个例子中,可能使用了POST请求,将视频文件作为二进制数据发送。 ...

Global site tag (gtag.js) - Google Analytics