android獲取URLConnection和HttpClient網絡請求響應碼

前段時間,有朋友問我網絡請求怎麼監聽超時,這個我當時也沒有沒有做過,就認為是try….catch…獲取異常,結果發現沒有獲取到,今天有時間,研究瞭一下,發現是從響應中來獲取的對象中獲取的,下面我把自己寫的URLConnection和HttpClient網絡請求響應碼的實體共享給大傢,希望對大傢有幫助!

    

[java]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 ; 
    } 
     
     

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

摘自  spring sky
 

發佈留言