Android 封装http恳求的对象类

    添加时间:2013-5-14 点击量:
    import java.io.BufferedReader;
    
    import java.io.InputStreamReader;
    import java.net.URLEncoder;
    import java.security.KeyStore;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import java.util.Map.Entry;

    import org.apache.http.HttpResponse;
    import org.apache.http.HttpVersion;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.conn.ClientConnectionManager;
    import org.apache.http.conn.scheme.PlainSocketFactory;
    import org.apache.http.conn.scheme.Scheme;
    import org.apache.http.conn.scheme.SchemeRegistry;
    import org.apache.http.conn.ssl.SSLSocketFactory;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
    import org.apache.http.message.BasicNameValuePair;
    import org.apache.http.params.BasicHttpParams;
    import org.apache.http.params.HttpParams;
    import org.apache.http.params.HttpProtocolParams;
    import org.apache.http.protocol.HTTP;
    import org.apache.http.util.EntityUtils;

    import android.content.Context;
    import android.net.ConnectivityManager;

    /
    收集对象类

    @author malinkang

    /

    public class NetUtils {
    /
    对收集连接状况进行断定

    @return true, 可用; false, 不成用
    /
    public static boolean isOpenNetwork(Context context) {
    ConnectivityManager connManager
    = (ConnectivityManager) context
    .getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connManager.getActiveNetworkInfo() != null) {
    return connManager.getActiveNetworkInfo().isAvailable();
    }

    return false;
    }

    /
    get恳求

    @param urlString
    @param params
    @return
    /
    public static String getRequest(String urlString, Map<String, String> params) {

    try {
    StringBuilder urlBuilder
    = new StringBuilder();
    urlBuilder.append(urlString);

    ifnull != params) {

    urlBuilder.append(
    "?");

    Iterator
    <Entry<String, String>> iterator = params.entrySet()
    .iterator();

    while (iterator.hasNext()) {
    Entry
    <String, String> param = iterator.next();
    urlBuilder
    .append(URLEncoder.encode(param.getKey(),
    "UTF-8"))
    .append(
    =
    .append(URLEncoder.encode(param.getValue(),
    "UTF-8"));
    if (iterator.hasNext()) {
    urlBuilder.append(
    &);
    }
    }
    }
    // 创建HttpClient对象
    HttpClient client = getNewHttpClient();
    // 发送get恳求创建HttpGet对象
    HttpGet getMethod = new HttpGet(urlBuilder.toString());
    HttpResponse response
    = client.execute(getMethod);
    // 获取状况码
    int res = response.getStatusLine().getStatusCode();
    if (res == 200) {

    StringBuilder builder
    = new StringBuilder();
    // 获取响应内容
    BufferedReader reader = new BufferedReader(
    new InputStreamReader(response.getEntity().getContent()));

    for (String s = reader.readLine(); s != null; s = reader
    .readLine()) {
    builder.append(s);
    }
    return builder.toString();
    }
    }
    catch (Exception e) {

    }

    return null;
    }

    /
    post恳求

    @param urlString
    @param params
    @return
    /
    public static String postRequest(String urlString,
    List
    <BasicNameValuePair> params) {

    try {
    // 1. 创建HttpClient对象
    HttpClient client = getNewHttpClient();
    // 2. 发get恳求创建HttpGet对象
    HttpPost postMethod = new HttpPost(urlString);
    postMethod.setEntity(
    new UrlEncodedFormEntity(params, HTTP.UTF_8));
    HttpResponse response
    = client.execute(postMethod);
    int statueCode = response.getStatusLine().getStatusCode();
    if (statueCode == 200) {
    System.out.println(statueCode);
    return EntityUtils.toString(response.getEntity());
    }
    }
    catch (Exception e) {

    }

    return null;
    }

    // 保存时+当时的秒数,
    public static long expires(String second) {
    Long l
    = Long.valueOf(second);

    return l 1000L + System.currentTimeMillis();
    }

    private static HttpClient getNewHttpClient() {
    try {
    KeyStore trustStore
    = KeyStore.getInstance(KeyStore
    .getDefaultType());
    trustStore.load(
    nullnull);

    SSLSocketFactory sf
    = new SSLSocketFactoryEx(trustStore);
    sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

    HttpParams params
    = new BasicHttpParams();
    HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
    HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);

    SchemeRegistry registry
    = new SchemeRegistry();
    registry.register(
    new Scheme("http", PlainSocketFactory
    .getSocketFactory(),
    80));
    registry.register(
    new Scheme("https", sf, 443));

    ClientConnectionManager ccm
    = new ThreadSafeClientConnManager(
    params, registry);

    return new DefaultHttpClient(ccm, params);
    }
    catch (Exception e) {
    return new DefaultHttpClient();
    }
    }
    }



    &#160;



    另一种封装好的get恳求,比来经常用的:




    public class HttpUtils {
    

    private final static String TAG = "EasyTokenSevice";
    private final static int connectionTimeout = 5000;
    private static InputStream inputStream = null;
    private static String urlStr = null;
    private static boolean isConnecting;

    /
    封装http get恳求

    @param url
    @return is
    /
    public static InputStream get(String url)throws IOException ,Exception {

    urlStr
    = url;
    isConnecting
    = true;

    HttpGet httpGet
    = new HttpGet(urlStr);
    HttpParams httpParameters
    = new BasicHttpParams();
    HttpConnectionParams.setConnectionTimeout(httpParameters,
    connectionTimeout);

    DefaultHttpClient httpClient
    = new DefaultHttpClient(httpParameters);
    HttpResponse response
    = httpClient.execute(httpGet);

    if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
    HttpEntity entity
    = response.getEntity();
    inputStream
    = entity.getContent();
    return inputStream;}
    else return null;




    }
    }

    读书,不要想着实用,更不要有功利心。读书只为了自身的修养。邂逅一本好书如同邂逅一位知己,邂逅一个完美之人。有时心生敬意,有时怦然心动。仿佛你心底埋藏多年的话,作者替你说了出来,你们在时光深处倾心相遇的一瞬间,情投意合,心旷神怡。
    分享到: