HttpClient4.3 教程 第五章 快速API

HttpClient4.3 教程 第五章 快速API

5.1.Easy to use facade API

HttpClient从4.2开始支持快速api。快速api仅仅实现了HttpClient的基本功能,它只要用于一些不需要灵活性的简单场景。例如,快速api不需要用户处理连接管理和资源释放。
下面是几个使用快速api的例子:

    // 执行一个get方法,设置超时时间,并且将结果变成字符串    Request.Get("http://www.yeetrack.com/")    .connectTimeout(1000)    .socketTimeout(1000)    .execute().returnContent().asString();    // 使用HTTP/1.1,通过'expect-continue' handshake来执行post方法    // 内容包含一个字符串,并且将结果转化成byte数组    Request.Post("http://www.yeetrack.com/do-stuff")    .useExpectContinue()    .version(HttpVersion.HTTP_1_1)    .bodyString("Important stuff", ContentType.DEFAULT_TEXT)    .execute().returnContent().asBytes();    // 通过代理服务器来执行一个带有特殊header的post请求,post请求中带有form表单,并且将返回结果写入文件    Request.Post("http://www.yeetrack.com/some-form")    .addHeader("X-Custom-header", "stuff")    .viaProxy(new HttpHost("myproxy", 8080))    .bodyForm(Form.form().add("username", "vip").add("password", "secret").build())    .execute().saveContent(new File("result.dump"));

如果需要在指定的安全上下文中执行某些请求,我们也可以直接使用Exector,这时候用户的认证信息就会被缓存起来,以便后续的请求使用。

    Executor executor = Executor.newInstance()    .auth(new HttpHost("somehost"), "username", "password")    .auth(new HttpHost("myproxy", 8080), "username", "password")    .authPreemptive(new HttpHost("myproxy", 8080));    executor.execute(Request.Get("http://somehost/"))    .returnContent().asString();    executor.execute(Request.Post("http://somehost/do-stuff")    .useExpectContinue()    .bodyString("Important stuff", ContentType.DEFAULT_TEXT))    .returnContent().asString();

5.1.1.响应处理

一般情况下,HttpClient的快速api不用用户处理连接管理和资源释放。但是,这样的话,就必须在内存中缓存这些响应消息。为了避免这一情况,建议使用使用ResponseHandler来处理Http响应。

继续阅读→

你可能感兴趣的:(HttpClient4.3 教程 第五章 快速API)