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.}