httpClient
参考文档:https://hc.apache.org/httpcomponents-client-5.2.x/quickstart.html
参考文档: https://blog.csdn.net/qq_38866898/article/details/118518221
参考文档httpClientUtils:
https://zhuanlan.zhihu.com/p/476084066?utm_id=0
同步:
SimpleHttpRequest request2 = SimpleRequestBuilder.get("http://httpbin.org/get").build();
httpclient.execute(request2, new FutureCallback<SimpleHttpResponse>() {
@Override
public void completed(SimpleHttpResponse response2) {
latch1.countDown();
System.out.println(request2.getRequestUri() + "->" + response2.getCode());
}
@Override
public void failed(Exception ex) {
latch1.countDown();
System.out.println(request2.getRequestUri() + "->" + ex);
}
@Override
public void cancelled() {
latch1.countDown();
System.out.println(request2.getRequestUri() + " cancelled");
}
});
异步:
ClassicHttpRequest httpPost = ClassicRequestBuilder.post("http://httpbin.org/post")
.setEntity(new UrlEncodedFormEntity(Arrays.asList(
new BasicNameValuePair("username", "vip"),
new BasicNameValuePair("password", "secret"))))
.build();
httpclient.execute(httpPost, response -> {
System.out.println(response.getCode() + " " + response.getReasonPhrase());
final HttpEntity entity2 = response.getEntity();
// do something useful with the response body
// and ensure it is fully consumed
EntityUtils.consume(entity2);
return null;
});
流畅的API
//流畅的API让用户不必处理系统的手动解除分配
//在某些情况下,以必须在存储器中缓冲响应内容为代价的资源。
Request.Get("http://targethost/homepage")
.execute().returnContent();
Request.Post("http://targethost/login")
.bodyForm(Form.form().add("username", "vip").add("password", "secret").build())
.execute().returnContent();
```