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应用开发的方方面面。 第一篇 基础篇 第1章 Android概述 Android概述,讲述了Android的前生后世、架构和特点、Android Market、应用程序...
� 开发方向有三个重点 :----------------------------------- Android 编程基础 7 � 应用软件的开发 � 特殊功能的原生链接库 � 专属应用程序框架 � 由于 Android 的A pp Market 性质,可能催生出专门的应用...
注: 由于第12,13,14章代码太大,无法上传到一个包中。 这三节代码会放到其他压缩包中。 作者:关东升,赵志荣 Java或C++程序员转变成为Android程序员 采用案例驱动模式展开讲解知识点,即介绍案例->案例涉及...
本例给出了最基本的设备接入、订阅、发布三个功能的示例。设备接入给出了旧版公共实例(新版的可以在此基础上改动)和企业实例两种方式;订阅功能还给出来数据解析,可以从payload解析出物模型的每一项数据显示在...
支持默认、全局、局部三个层次的配置功能。 支持动态配置和自定义底层框架Okhttpclient、Retrofit. 加入基础ApiService,减少Api冗余。 支持多种方式访问网络GET、POST、PUT、DELETE等请求协议。 支持网络缓存,六种...
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版)》在上一版的基础上,以android手机应用程序开发(采用android sdk 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计...
针对这些问题,用户可以尝试一些基本的解决方法,如清除应用缓存和数据、降低屏幕亮度、关闭没有使用的连接和传感器、限制后台运行的应用、删除不需要的文件和应用等。 随着Android系统的不断发展,其功能和性能也...
android-studio-2.1.3,一共五个压缩包(目前我每次只能上传小于60M的文件),是目前截止到上传为止(2016年9月17)的最新版本,希望给不能访问android官网的朋友一个小小的帮助。不要积分,不要积分,不要积分,重要的...
《Google Android SDK开发范例大全(第3版)》在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计...
拥有下拉菜单,聊天界面拥有一个聊天机器人,使用图灵官网提供的api,每次进入都会以不同的话欢迎使用者 此部分还完成了课本第七章基于HTTP的网络访问。 音乐播放器使用的是本地的mp3文件,未联网。计算器可以实现...
android-studio-2.1.3,一共五个压缩包(目前我每次只能上传小于60M的文件),是目前截止到上传为止(2016年9月17)的最新版本,希望给不能访问android官网的朋友一个小小的帮助。不要积分,不要积分,不要积分,重要的...
《Google Android SDK开发范例大全(第3版)》在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计...
《Google Android SDK开发范例大全(第3版)》在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计...
注意:之前上传的同类资源1.0、1.1、1.2、1.3版本有一些小问题,现在上传修改后的最新版本,各位请注意下载最新版的,主界面的ip地址和port端口号是我的一个服务器上的地址,可以正常连接 一、端点连接机制:基于...
要开发一个头像上传的模块,头像上传过程分两步。第一步,相机拍照或者从图库选取照片,产生一个照片,第二步,提供头像剪裁,一般是剪裁为方形的。第三步,上传头像,删除不必要的缓存文件。 拍照和图库选择照片都...
受上传限制,这是第二个数据包,下载完后,请访问http://download.csdn.net/detail/aiyuaichou/8352679,加载第三个数据包,具体使用说明在第一个数据包