-
maven基础依赖
org.apache.httpcomponents
httpclient
x.x.x
-
HttpClient 的基本用法
// 初始化httpclient
CloseableHttpClient httpclient = HttpClients.createDefault();
// 简单生成get请求
HttpGet httpget = new HttpGet(“http://localhost/”);
// 存放返回内容的类
CloseableHttpResponse response = httpclient.execute(httpget);try{
<…>
} finally{
response.close();
} -
生成 HTTP 请求
方法一:
HttpGet httpGet = new HttpGet(“http://www.google.com/search?hl=en&q=httpclient&btnG=Google+Search&aq=f&oq=”);方法二:
URI uri = new URIBuilder()
.setScheme(“http”)
.setHost(“www.google.com”)
.setPath("/search")
.setParameter(“q”, “httpclient”)
.setParameter(“btnG”, “Google Search”)
.setParameter(“aq”, “f”)
.setParameter(“oq”, “”)
.build();
HttpGet httpGet = new HttpGet(uri); -
构建 HTTP 响应
HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK, “OK”);System.out.println(response.getProtocolVersiong());
System.out.println(response.getStatusLine().getStatusCode());
System.out.println(response.getStatusLine().getReasonPhrase());
System.out.println(response.getStatusLine().toString()); -
添加信息头
HttpResponse response = new BasicHttpResponse(HttpVersiong.HTTP_1_1, HttpStatus.SC_OK, “OK”);
response.addHeader(“Set-Cookie”, “cl=a; path=/; domain=localhost”);
response.addHeader(“Set-Cookie”, “cl=b; path=”/"; c3=c; domain=“localhost”");
Header h1 = response.getFirstHeader(“Set-Cookie”);
System.out.println(h1);
Header h2 = response.getLastHeader(“Set-Cookie”);
System.out.println(h2);
Header[] hs = response.getHeaders(“Set-Cookie”);
System.out.println(hs.length); -
生成 HTTP 实体
5.0 默认 HttpEntity entity1 = response1.getEntity();
4.5版本
string类型的实体
StringEntity myEntity = new StringEntity(“important message”,
ContentType.create(“text/plain”, “UTF-8”));System.out.println(myEntity.getContentType());
System.out.println(myEntity.getContentLength());
System.out.println(EntityUtils.toString(myEntity));
System.out.println(EntityUtils.toByteArray(myEntity).length);file类型的实体
File file = new File(“somefile.txt”);
FileEntity entity = new FileEntity(file, ContentType.create(“text/plain”, “UTF-8”));HttpPost httppost = new HttpPost(“http://localhost/action.do”);
httppost.setEntity(entity);表单类型的实体
List formparams = new ArrayList();
formparams.add(new BasicNameValuePair(“param1”, “value1”));
formparams.add(new BasicNameValuePair(“param2”, “value2”));
UrlEncodedFormEntity entity = new UrlEncodeFormEntity(formparams, Consts.UTF-8);
HttpPost httppost = new HttpPost(“http://localhost/handler.do”);
httppost.setEntity(entity); -
确保 HTTP 实体被消耗
EntityUtils.consume(entity1) -
HTTP代理
方式一:
HttpHost proxy = new HttpHost(“someproxy”, 8080);
DefaultProxyRoutePlanner routePlanner = new DefaultProxyRoutePlanner(proxy);
CloseableHttpClient httpclient = HttpClients.custom()
.setRoutePlanner(routePlanner)
.build();
方式二:
SystemDefaultRoutePlanner routePlanner = new SystemDefaultRoutePlanner(ProxySelector.getDefault());
CloseableHttpClient httpclient = HttpClients.custom()
.setRoutePlanner(routePlanner)
.build();
方式三:
HttpRoutePlanner routePlanner = new HttpRoutePlanner(){
public HttpRoute determineRoute(
HttpHost target,
HttpRequest request,
HttpContext context ) throws HttpException {
return new HttRoute(target, null, new HttpHost(“someproxy”, 8080), “https”.equalsIgnoreCase(target.getSchemeName()));
}
};CloseableHttpClient httpclient = HttpClients.custom()
.setRoutePlanner(routePlanner)
.build();
}
}
httpclient基本用法
最新推荐文章于 2024-05-07 12:12:25 发布