http://www.open-open.com/lib/view/open1326868964593.html
有朋友問我網路請求怎麼監聽逾時,這個我當時也沒有沒有做過,就認為是try....catch...擷取異常,結果發現沒有擷取到,今天有時間,研究了一下,發現是從響應中來擷取的對象中擷取的,下面我把自己寫的URLConnection和HttpClient網路請求響應碼的實體共用給大家,希望對大家有協助!
package com.zhangke.product.platform.http.json;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.UnsupportedEncodingException;import java.net.HttpURLConnection;import java.net.InetSocketAddress;import java.net.Proxy;import java.net.URL;import java.net.URLConnection;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Map;import org.apache.http.Header;import org.apache.http.HttpHost;import org.apache.http.HttpResponse;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpPost;import org.apache.http.conn.ClientConnectionRequest;import org.apache.http.conn.params.ConnRoutePNames;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import org.apache.http.params.BasicHttpParams;import org.apache.http.params.HttpConnectionParams;import org.apache.http.params.HttpParams;import com.zhangke.product.platform.util.NetworkUtil;import android.content.Context;import android.util.Log;/** * @author spring sky * QQ 840950105 * Email :vipa1888@163.com * 著作權:spring sky * This class use in for request server and get server respnonse data * * */public class NetWork {/** * 網路請求響應碼 * <br> */private int responseCode = 1;/** * 408為網路逾時 */public static final int REQUEST_TIMEOUT_CODE = 408;/** * 請求字元編碼 */private static final String CHARSET = "utf-8";/** * 請求伺服器逾時時間 */private static final int REQUEST_TIME_OUT = 1000*10; /** * 讀取響應的資料時間 */private static final int READ_TIME_OUT = 1000*5;private Context context ;public NetWork(Context context) {super();this.context = context;}/** * inputstream to String type * @param is * @return */public String getString(InputStream is ){String str = null;try {if(is!=null){BufferedReader br = new BufferedReader(new InputStreamReader(is, CHARSET));String line = null;StringBuffer sb = new StringBuffer();while((line=br.readLine())!=null){sb.append(line);}str = sb.toString();if(str.startsWith("<html>")) //擷取xml或者json資料,如果擷取到的資料為xml,則為null{str = null;}}} catch (Exception e) {e.printStackTrace();}return str;}/** * httpClient request type * @param requestURL * @param map * @return */public InputStream requestHTTPClient(String requestURL,Map<String, String> map){InputStream inputStream = null;/** * 添加逾時時間 */BasicHttpParams httpParams = new BasicHttpParams();HttpConnectionParams.setConnectionTimeout(httpParams, REQUEST_TIME_OUT);HttpConnectionParams.setSoTimeout(httpParams, READ_TIME_OUT);HttpClient httpClient = new DefaultHttpClient(httpParams);if (NetworkUtil.getNetworkType() == NetworkUtil.WAP_CONNECTED) {HttpHost proxy = new HttpHost("10.0.0.172", 80);httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,proxy);}HttpPost httpPost = new HttpPost(requestURL);httpPost.setHeader("Charset", CHARSET);httpPost.setHeader("Content-Type","application/x-www-form-urlencoded");List<BasicNameValuePair> list = new ArrayList<BasicNameValuePair>();Iterator<String> it = map.keySet().iterator();while(it.hasNext()){String key = it.next();String value = map.get(key);Log.e("request server ", key+"="+value);list.add(new BasicNameValuePair(key, value));}try {httpPost.setEntity(new UrlEncodedFormEntity(list,CHARSET));HttpResponse response =httpClient.execute(httpPost);inputStream = response.getEntity().getContent();responseCode = response.getStatusLine().getStatusCode(); //擷取響應碼Log.e("response code", response.getStatusLine().getStatusCode()+"");//Header[] headers = response.getAllHeaders(); //擷取header中的資料//for (int i = 0; i < headers.length; i++) {//Header h = headers[i];//Log.e("request heads", h.getName()+"="+h.getValue()+" ");//}} catch (Exception e) {inputStream = null;e.printStackTrace();}return inputStream;}/** * url request type * @param requestURL * @param map * @return */public InputStream requestHTTPURL(String requestURL,Map<String,String> map ){InputStream inputStream = null;URL url = null;URLConnection urlconn = null;HttpURLConnection conn = null;try {url = new URL(requestURL);if (NetworkUtil.getNetworkType() == NetworkUtil.WAP_CONNECTED) {Proxy proxy = new Proxy(java.net.Proxy.Type.HTTP,new InetSocketAddress("10.0.0.172", 80));urlconn = url.openConnection(proxy);}else{urlconn = url.openConnection();}conn = (HttpURLConnection) urlconn;if(conn!=null){conn.setReadTimeout(READ_TIME_OUT);conn.setConnectTimeout(REQUEST_TIME_OUT);conn.setDoInput(true);conn.setDoOutput(true);conn.setUseCaches(false);conn.setRequestProperty("Charset", CHARSET);conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");OutputStream os = conn.getOutputStream();StringBuffer sb = new StringBuffer();Iterator<String> it = map.keySet().iterator();while(it.hasNext()){String key = it.next();String value = map.get(key);Log.e("request server ", key+"="+value);sb.append(key).append("=").append(value).append("&");}String params = sb.toString().substring(0, sb.toString().length()-1);os.write(params.getBytes());os.close();inputStream = conn.getInputStream();Log.e("response code", conn.getResponseCode()+"");responseCode = conn.getResponseCode(); //擷取響應碼//Map<String, List<String>> headers = conn.getHeaderFields(); //擷取header中的資料//Iterator<String> is = headers.keySet().iterator();//while(is.hasNext())//{//String key = is.next();//List<String> values = headers.get(key);//String value = "";//for (int i = 0; i < values.size(); i++) {//value+= values.get(i);//}//Log.e("request heads",key+"="+value+" ");//}}} catch (Exception e) {inputStream = null;e.printStackTrace();}return inputStream;}/** * 網路請求響應碼 */public int getResponseCode(){return responseCode ;}}