当前位置:操作系统 > 安卓/Android >>

Android----http请求工具类

项目中客户端与服务器端采用http请求进行交互,在这里我把http请求的工具类贴出来。

该工具类采用的是HttpClients框架,HTTP保存方式有两种选择 :一种:整个应用 只创建 一个HttpClient对象,然后保存在整个程序中去。此情况无法创建多线程中应用。
另一种:随时创建HttpClient对象。系统自动保存Session就行。此情况可能对系统资源消耗利害
 用完之后请随时销毁HttpClient,避免系统中存在很多HttpClient对象。在这里我采用的是第二种。

包含两个java文件,第一个是主要的请求工具类文件,第二个主要是保存请求的session,下面见代码:

[cpp]
package com.hlj.padtwo.util.util_public.httputil; 
 
 
 
import java.io.File; 
import java.io.IOException; 
import java.io.InputStream; 
import java.net.URLEncoder; 
import java.nio.charset.Charset; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.Iterator; 
import java.util.List; 
import java.util.Map; 
 
import javax.net.ssl.SSLHandshakeException; 
 
import org.apache.http.Header; 
import org.apache.http.HttpEntityEnclosingRequest; 
import org.apache.http.HttpHost; 
import org.apache.http.HttpRequest; 
import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.NoHttpResponseException; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.CookieStore; 
import org.apache.http.client.HttpRequestRetryHandler; 
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.client.params.HttpClientParams; 
import org.apache.http.conn.params.ConnRouteParams; 
import org.apache.http.entity.mime.HttpMultipartMode; 
import org.apache.http.entity.mime.MultipartEntity; 
import org.apache.http.entity.mime.content.ContentBody; 
import org.apache.http.entity.mime.content.FileBody; 
import org.apache.http.entity.mime.content.StringBody; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.params.BasicHttpParams; 
import org.apache.http.params.HttpConnectionParams; 
import org.apache.http.params.HttpParams; 
import org.apache.http.protocol.ExecutionContext; 
import org.apache.http.protocol.HTTP; 
import org.apache.http.protocol.HttpContext; 
import org.apache.http.util.EntityUtils; 
 
import android.app.Activity; 
import android.content.Context; 
import android.widget.Toast; 
 
import com.hlj.padtwo.util.application.MyApplication; 
 
 
/***
 * Http通信中的POST和GET请求方式的不同。GET把参数放在URL字符串后面,传递给服务器。
 * 而POST方法的参数是放在Http请求中,主要用于手机对Http访问提供公共的访问类对象。
 * @author hlj
 * @date
 * @versionn 1.0
 **/ 
public class HttpClients { 
    /** 执行downfile后,得到下载文件的大小 */ 
    private long contentLength; 
    /** 返回连接失败信息 **/ 
    private String strResult = "服务器无法连接,请检查网络"; 
 
    /** http 请求头参数 **/ 
    private HttpParams httpParams; 
    /** httpClient 对象 **/ 
    private DefaultHttpClient httpClient; 
 
 
    /** 得到上下文 **/ 
    private Context context; 
    private Activity activity = null; 
 
    public HttpClients(Activity act) { 
        this.context = act.getBaseContext(); 
        this.activity = act; 
        getHttpClient(); 
    } 
 
    /**
     * 提供GET形式的访问网络请求 doGet 参数示例: Map params=new HashMap();
     * params.put("usename","helijun"); params.put("password","123456");
     * httpClient.doGet(url,params);
     * 
     * @param url
     *            请求地址
     * @param params
     *            请求参数
     * @return 返回 String jsonResult;
     * 
     * **/ 
    @SuppressWarnings("unchecked") 
    public String doGet(String url, Map params) { 
        /** 建立HTTPGet对象 **/ 
        String paramStr = ""; 
        if (params == null) 
            params = new HashMap(); 
        /** 迭代请求参数集合 **/ 
        Iterator iter = params.entrySet().iterator(); 
        while (iter.hasNext()) { 
            Map.Entry entry = (Map.Entry) iter.next(); 
            Object key = entry.getKey(); 
            String val = nullToString(entry.getValue()); 
            paramStr += paramStr = "&" + key + "=" + URLEncoder.encode(val); 
        } 
        if (!paramStr.equals("")) { 
            paramStr = paramStr.replaceFirst("&", "?"); 
            url += paramStr; 
        } 
        return doGet(url); 
    } 
 
    /**
     * 提供GET形式的访问网络请求 doGet 参数示例: Map params=new HashMap();
     * params.put("usename","gongshuanglin"); params.put("password","123456");
     * httpClient.doGet(url,params);
     * 
     * @param url
     *            请求地址
     * @param params
     *            请求参数
     * @return 返回 String jsonResult;
     * 
     */ 
    public String

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,