android擷取URLConnection和HttpClient網路請求響應碼

來源:互聯網
上載者:User

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 ;}}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.