关于android Http访问,上传,用了三个步骤

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