`
abc20899
  • 浏览: 911119 次
  • 性别: 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应用开发详解

    本书分为三个部分,包括基础篇、技术篇和应用篇。由浅入深地讲述了Android应用开发的方方面面。 第一篇 基础篇 第1章 Android概述 Android概述,讲述了Android的前生后世、架构和特点、Android Market、应用程序...

    新版Android开发教程.rar

    � 开发方向有三个重点 :----------------------------------- Android 编程基础 7 � 应用软件的开发 � 特殊功能的原生链接库 � 专属应用程序框架 � 由于 Android 的A pp Market 性质,可能催生出专门的应用...

    Android开发案例驱动教程 配套代码

    注: 由于第12,13,14章代码太大,无法上传到一个包中。 这三节代码会放到其他压缩包中。 作者:关东升,赵志荣 Java或C++程序员转变成为Android程序员 采用案例驱动模式展开讲解知识点,即介绍案例-&gt;案例涉及...

    Android studio版阿里云物联网平台设备接入源代码(简单易懂)

    本例给出了最基本的设备接入、订阅、发布三个功能的示例。设备接入给出了旧版公共实例(新版的可以在此基础上改动)和企业实例两种方式;订阅功能还给出来数据解析,可以从payload解析出物模型的每一项数据显示在...

    Android代码-XHttp2 一个功能强悍的网络请求库

    支持默认、全局、局部三个层次的配置功能。 支持动态配置和自定义底层框架Okhttpclient、Retrofit. 加入基础ApiService,减少Api冗余。 支持多种方式访问网络GET、POST、PUT、DELETE等请求协议。 支持网络缓存,六种...

    精通ANDROID 3(中文版)1/2

    11.1 使用HTTP服务  11.1.1 将HttpClient用于HTTPGET请求  11.1.2 将HttpClient用于HTTPPOST请求(多部分POST请求示例)  11.1.3 SOAP、JSON和XML分析程序  11.1.4 处理异常  11.1.5 解决多线程问题  ...

    《Google Android SDK开发范例大全(第3版)》.pdf

     《google android sdk开发范例大全(第3版)》在上一版的基础上,以android手机应用程序开发(采用android sdk 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计...

    Android基于volley的拍照+多选上传功能.zip

    针对这些问题,用户可以尝试一些基本的解决方法,如清除应用缓存和数据、降低屏幕亮度、关闭没有使用的连接和传感器、限制后台运行的应用、删除不需要的文件和应用等。 随着Android系统的不断发展,其功能和性能也...

    android-studio-2.1.3-part03

    android-studio-2.1.3,一共五个压缩包(目前我每次只能上传小于60M的文件),是目前截止到上传为止(2016年9月17)的最新版本,希望给不能访问android官网的朋友一个小小的帮助。不要积分,不要积分,不要积分,重要的...

    Google Android SDK开发范例大全(第3版) 1/5

    《Google Android SDK开发范例大全(第3版)》在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计...

    android studio实现多功能平台,内含音乐播放器、计算器、相机、聊天机器人、朋友圈、录音等。实现本科课程的绝大多数内容

    拥有下拉菜单,聊天界面拥有一个聊天机器人,使用图灵官网提供的api,每次进入都会以不同的话欢迎使用者 此部分还完成了课本第七章基于HTTP的网络访问。 音乐播放器使用的是本地的mp3文件,未联网。计算器可以实现...

    android-studio-2.1.3-part01

    android-studio-2.1.3,一共五个压缩包(目前我每次只能上传小于60M的文件),是目前截止到上传为止(2016年9月17)的最新版本,希望给不能访问android官网的朋友一个小小的帮助。不要积分,不要积分,不要积分,重要的...

    Google Android SDK开发范例大全(第3版) 4/5

    《Google Android SDK开发范例大全(第3版)》在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计...

    Google Android SDK开发范例大全(第3版) 3/5

    《Google Android SDK开发范例大全(第3版)》在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计...

    基于Android的聊天室应用 ChatRoom 1.4

    注意:之前上传的同类资源1.0、1.1、1.2、1.3版本有一些小问题,现在上传修改后的最新版本,各位请注意下载最新版的,主界面的ip地址和port端口号是我的一个服务器上的地址,可以正常连接 一、端点连接机制:基于...

    Android拍照剪裁示例代码

    要开发一个头像上传的模块,头像上传过程分两步。第一步,相机拍照或者从图库选取照片,产生一个照片,第二步,提供头像剪裁,一般是剪裁为方形的。第三步,上传头像,删除不必要的缓存文件。 拍照和图库选择照片都...

    Android4.4模拟器system-images(2)

    受上传限制,这是第二个数据包,下载完后,请访问http://download.csdn.net/detail/aiyuaichou/8352679,加载第三个数据包,具体使用说明在第一个数据包

Global site tag (gtag.js) - Google Analytics