二、访问一下开源中国

    1.材料准备


    2.准备 HttpClient 对象

    首先我们需要获得一个 HttpClient 对象来完成我们的访问操作.那么我们需要如何构造我们的对象呢?很显然是一个咯。下面我们来看看 new 方法的说明:

    • 构造一个 HttpClient 对象。
    • urlString: 请求的 URL 地址。
    • timeOut: 请求超时时间。
    • charset: 请求使用的字符集,默认 UTF-8。

    我们可以看到HttpClient有4个构造方法,三个参数,相信不用多说,聪明的你看看上面的说明就立刻明白了.下面我们来做两个实例化:

    1. //构造一个基于 http 的请求
    2. HttpClient http = new HttpClient("http://www.oschina.net","UTF-8",10000);
    3. //构造一个基于 https 的请求
    4. HttpClient https = new HttpClient("https://www.oschina.net/","UTF-8",10000);

    3.填充HttpClient

    现在我们已经有了一个 HttpClient 对象了,我们可能会需要做如下操作:

    • 设置请求方法
    • 设置 HTTP header
    • 设置 Cookie
    • 设置请求的 Part 内容(multipart/form-data)下面我们来逐一讲解: 设置 HTTP方法
    1. public void setMethod(String method)
    • 为当前 HTTP 设置请求方法,如:GETPOSTHEADCONNECTTRACEDELETE等。
    • method: 方法字符串。设置 HTTP Header
    1. public Header getHeader()
    • 返回值: HTTP 请求头。

    通过'getHeader'方法获得一个Map,通过对这个 Map进行putget、可以对 Header 进行操作。

    • 返回值: 获取HTTPCookies集合。

    设置 HTTP 请求参数

    1. public HttpClient putParameters(String name,Object value)
    • 为HTTP设置请求参数
    • name: 参数名。
    • value: 参数值。

    设置请求参数,不需要多说什么,需要说明的是这里设置的参数会根据 GET/POST(但不包括multipart/form-data请求) 等请求的规范自动附加到请求中。

    添加 HTTP multipart请求

    1. public void addPart(Part part)
    • 类似Form 的 Actiong="POST" enctype="multipart/form-data"提交的请求。
    • part: org.voovan.http.message.packet.Part对象封装了HTTP multipart请求,Part对象的有一个方便的构造函数:
    1. public Part(String name,String value)
    • name: 参数名。
    • value: 参数值。

    4.使用 HttpClient 发送 Http 请求

    好了,现在到了,我们发送 Http 请求的时候了,棒棒哒.发送 Http 请求有两种方式:

    默认路径参数发送

    • 返回值: Response对象。指定路径发送
    1. public Response Send(String urlString) throws Exception
    • urlString: 相对于主机的相对 URL 路径,用于一次连接主机多次请求操作.例如:访问的网址是 http://www.baid.com/s ,那么构造 HttpClient 时使用作为参数,调用 send 时使用/s作为参数。
    • 发送HTTP请求。
    • 返回值: Response对象。

    好了,我们可以发送请求,但不要忘了,在发送完以后记得调用'close()'方法来关闭连接哦.

    下面我们来使用第一步创建的两个 HttpClient 对象来访问 开源中国

    1. HttpClient http = new HttpClient("http://www.oschina.net","UTF-8",10000);
    2. Logger.simple(http.send().body().getBodyString());
    3. http.close();
    4. HttpClient https = new HttpClient("https://www.oschina.net/","UTF-8",10000);
    5. Logger.simple(https.send().body().getBodyString());
    6. https.close();
    1. HttpClient http = new HttpClient("http://www.oschina.net","UTF-8",10000);
    2. Logger.simple(http.send().body().getBodyString());
    3. http.close();

    我们在方法调用之前连续访问了两个不同的网址,这两个网址的根域名都是 ,现在大家可以根据自己的需要修改代码进行测试了.