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开发环境包括Android ...
综上所述,实现Android的文件上传和多选、单选文件功能涉及到了文件选择器的定制、文件操作、网络通信等多个方面。通过合理的设计和优化,可以提供高效、安全的文件操作体验。在实际开发中,要不断迭代和优化,确保...
以上就是从相册选取视频、压缩视频并上传到服务器的Android开发中涉及的主要知识点,涵盖了多媒体文件访问、解码、压缩、网络传输等多个方面。在实际开发中,要根据具体需求和平台特性进行适当调整和优化。
### Android SDK 访问权限详解 #### 一、概述 Android SDK访问权限是开发者在开发Android应用程序时必须理解和掌握的重要概念。为了保护用户隐私及设备安全,Android系统通过权限管理机制来控制应用对设备功能及...
本篇文章将详细探讨Android客户端如何使用不同的方法上传数据,以及涉及到的关键技术,如JSON和网络请求处理。 首先,我们关注的是两种主要的HTTP请求方式:GET和POST。在Android中,通常使用HttpURLConnection或者...
在Android中,我们可以使用`HttpURLConnection`或者第三方库如`OkHttp`来执行这样的请求。这里我们主要介绍`OkHttp`,因为它更易于使用且性能出色。 1. **集成OkHttp库** 在`build.gradle`文件中添加依赖: ```...
通常使用HTTP或HTTPS协议将音频文件上传到Web服务器。可以使用Android的HttpURLConnection或者第三方库如OkHttp。在请求中设置合适的HTTP头,如Content-Type(音频文件的MIME类型),并将音频文件的二进制数据写入...
在Android平台上,开发一款应用程序允许用户使用内置摄像头拍照并上传照片至PHP服务器是一个常见的需求。这个过程涉及到Android的多媒体API、文件操作以及网络通信技术。下面将详细解释这些知识点。 1. **Android...
在Android平台上,文件上传是一个常见的任务,特别是在移动应用开发中,如社交应用、云存储服务等,都需要用户能够上传图片、文档等数据。本示例将重点讲解如何在Android手机上实现文件上传功能。 首先,我们需要...
Android提供多种方式实现网络访问,如HttpClient(已废弃,但仍然可用)、HttpURLConnection和第三方库如Retrofit或Volley。这些工具可以帮助开发者构建网络请求,处理响应,以及进行异步操作以避免阻塞UI线程。 8....
它有三个泛型参数:`Params`代表输入参数类型,`Progress`代表后台处理过程中的进度更新类型,`Result`代表后台处理完成后返回的结果类型。`doInBackground()`方法用于执行后台任务,`onPostExecute()`方法用于处理...
本项目“android 通过ftp协议访问服务器上的目录,通过listview 展示”就是实现了这样一个功能,允许用户浏览服务器上的目录并展示在ListView中。下面我们将详细讲解这个过程中的关键知识点。 1. FTP协议:FTP是...
本文将详细讲解如何使用HTTP协议在Android客户端实现文件上传,并涉及服务器端的相关设置。 首先,我们需要了解HTTP协议。HTTP(超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议,是互联网...
总结,Android录音及上传录音涉及到`MediaRecorder`类的使用、文件存储、权限管理以及网络请求等多个知识点。在实际开发中,开发者需根据项目需求灵活运用这些技术,并考虑用户体验、性能优化等方面。同时,随着...
在Android中,我们通常使用`HttpURLConnection`或第三方库如`OkHttp`来实现这一过程。 2. **Multipart/form-data** Android上传文件通常涉及`Multipart/form-data`编码方式,这是HTTP协议中用于处理多部分数据的一...
可以使用`BitmapFactory`加载图片,然后用`Bitmap.compress()`方法将其压缩。 接着,我们要处理网络请求。在Android中,HTTP请求通常通过HttpURLConnection或者第三方库如OkHttp、Volley等实现。这里我们以OkHttp为...
可以使用Bitmap的`compress()`方法,选择合适的格式(如JPEG)和质量,或者使用第三方库如 Glide 或 Picasso 进行优化。 5. **多图选择**: 对于多张图片的选择,可以使用`Intent.createChooser()`创建一个多选择...
总结起来,这个Android HTTP通信例子展示了如何在Android应用中使用HTTP协议与Java Web服务器进行交互,包括JSON数据的传递、文件的上传和下载,以及错误处理等关键环节。理解并掌握这些技术对于开发功能丰富的...
6. **网络上传**:上传视频到PHP服务器通常使用HTTP或HTTPS协议。Android提供了HttpURLConnection或第三方库如Volley、Retrofit等进行网络请求。在这个例子中,可能使用了POST请求,将视频文件作为二进制数据发送。 ...