`
秦朝古月
  • 浏览: 224240 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用Java进行Http访问

    博客分类:
  • Java
阅读更多
想开发一个在Android上运行的客户端程序,首先要学会怎么用Java进行Http访问。
HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。
  • 实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)
  • 支持自动转向
  • 支持 HTTPS 协议
  • 支持代理服务器等

下载地址:http://jakarta.apache.org/commons/httpclient/downloads.html

一个进行Http访问的例子。
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.URIException;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.commons.httpclient.util.URIUtil;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public final class HttpTookit {
    private static Log log = LogFactory.getLog(HttpTookit.class);

    public static String doGet(String url, String queryString) {
        String response = null;
        HttpClient client = new HttpClient();
        HttpMethod method = new GetMethod(url);
        try {
            if (StringUtils.isNotBlank(queryString))
                method.setQueryString(URIUtil.encodeQuery(queryString));
            client.executeMethod(method);
            if (method.getStatusCode() == HttpStatus.SC_OK) {
                response = method.getResponseBodyAsString();
            }
        } catch (URIException e) {
            log.error("执行HTTP Get请求时,编码查询字符串“" + queryString + "”发生异常!", e);
        } catch (IOException e) {
            log.error("执行HTTP Get请求" + url + "时,发生异常!", e);
        } finally {
            method.releaseConnection();
        }
        return response;
    }

    public static String doPost(String url, Map<String, String> params) {
        String response = null;
        HttpClient client = new HttpClient();
        HttpMethod method = new PostMethod(url);
        for (Iterator it = params.entrySet().iterator(); it.hasNext();) {
        }
        if (params != null) {
        	HttpMethodParams p = new HttpMethodParams();
            for (Map.Entry<String, String> entry : params.entrySet()) {
                p.setParameter(entry.getKey(), entry.getValue());
            }
            method.setParams(p);
        }
        try {
            client.executeMethod(method);
            if (method.getStatusCode() == HttpStatus.SC_OK) {
                response = method.getResponseBodyAsString();
            }
        } catch (IOException e) {
            log.error("执行HTTP Post请求" + url + " 时,发生异常!", e);
        } finally {
            method.releaseConnection();
        }
        return response;
    }

    public static void main(String[] args) {
        String x = doGet("http://ilgnep.tk", "");
        System.out.println(x);
    }
}

下一步就是实现认证了。
参考
http://www.ibm.com/developerworks/cn/opensource/os-httpclient/
http://lavasoft.blog.51cto.com/62575/168276
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics