文章目录
apache httpclient
https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient
https://mvnrepository.com/artifact/org.apache.httpcomponents/httpmime/
http://hc.apache.org/httpcomponents-client-ga/index.html
GET
URIBuilder builder = new URIBuilder("http://www.baidu.com/s");
builder.addParameter("wd", "wzj_whut");
String url = builder.toString();
try (CloseableHttpClient httpclient = HttpClients.createDefault()) {
final HttpGet httpget = new HttpGet(url);
httpget.addHeader(HttpHeaders.AUTHORIZATION, "token ");
CloseableHttpResponse responseBody = httpclient.execute(httpget);
if(responseBody.getStatusLine().getStatusCode() == 200) {
String responseText = EntityUtils.toString(responseBody.getEntity());
System.out.println(responseText);
}
}
POST Form
String url = "https://ufosdk.baidu.com/?m=Client&a=postMsg";
try (CloseableHttpClient httpclient = HttpClients.createDefault()) {
final HttpPost post = new HttpPost(url);
List<NameValuePair> formParams = new ArrayList<NameValuePair>();
formParams.add(new BasicNameValuePair("content", "hello"));
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formParams, Consts.UTF_8);
post.setEntity(entity);
//post.setEntity(new StringEntity("q=httpclient", ContentType.DEFAULT_TEXT));
CloseableHttpResponse responseBody = httpclient.execute(post);
String responseText = EntityUtils.toString(responseBody.getEntity());
if(responseBody.getStatusLine().getStatusCode() == 200) {
}else{
System.out.println("http error: " + responseBody.getStatusLine().getStatusCode());
}
System.out.println(responseText);
}
POST String
post.setEntity(new StringEntity("q=httpclient", ContentType.DEFAULT_TEXT));
上传文件/Multipart
String url = "https://ufosdk.baidu.com/?m=Client&a=postMsg";
try (CloseableHttpClient httpclient = HttpClients.createDefault()) {
final HttpPost post = new HttpPost(url);
// 依赖apache的httpmime
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.addTextBody("text", "hello", ContentType.DEFAULT_BINARY);
File file = new File("/myfile");
builder.addBinaryBody("file", file, ContentType.IMAGE_JPEG, file.getName());
HttpEntity entity = builder.build();
post.setEntity(entity);
CloseableHttpResponse responseBody = httpclient.execute(post);
String responseText = EntityUtils.toString(responseBody.getEntity());
if(responseBody.getStatusLine().getStatusCode() == 200) {
}else{
System.out.println("http error: " + responseBody.getStatusLine().getStatusCode());
}
System.out.println(responseText);
}
设置超时
RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(1000) //都是毫秒
.setConnectTimeout(1000)
.build();
HttpGet httpGet = new HttpGet("http://localhost/1");
httpGet.setConfig(requestConfig);
启用cookie
HttpClientBuilder builder = HttpClientBuilder.create().setDefaultCookieStore(new BasicCookieStore());
CloseableHttpClient httpClient = builder.build();
okhttp
http://square.github.io/okhttp/
基本用法
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url("https://www.baidu.com").build();
try (Response response = client.newCall(request).execute()) {
System.out.println(response.body().string());
}
上传文件
RequestBody body = MultipartBody.create(MultipartBody.FORM, new File("/mytest1.jpg"));
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url("https://www.baidu.com")
.post(body)
.build();
try (Response response = client.newCall(request).execute()) {
System.out.println(response.body().string());
}
POST
RequestBody body = RequestBody.create(MediaType.get("application/json; charset=utf-8"), "{}");
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url("https://www.baidu.com")
.post(body)
.build();
try (Response response = client.newCall(request).execute()) {
System.out.println(response.body().string());
}
设置超时
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.connectTimeout(30, TimeUnit.SECONDS);
builder.readTimeout(30, TimeUnit.SECONDS);
builder.writeTimeout(30, TimeUnit.SECONDS);
OkHttpClient client = builder.build();
websocket
没有实际测试
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url("https://www.baidu.com").build();
WebSocket ws = client.newWebSocket(request, new WebSocketListener() {
@Override
public void onOpen(WebSocket webSocket, Response response) {
super.onOpen(webSocket, response);
}
@Override
public void onMessage(WebSocket webSocket, String text) {
super.onMessage(webSocket, text);
}
@Override
public void onMessage(WebSocket webSocket, ByteString bytes) {
super.onMessage(webSocket, bytes);
}
@Override
public void onClosing(WebSocket webSocket, int code, String reason) {
super.onClosing(webSocket, code, reason);
}
@Override
public void onClosed(WebSocket webSocket, int code, String reason) {
super.onClosed(webSocket, code, reason);
}
@Override
public void onFailure(WebSocket webSocket, Throwable t, Response response) {
super.onFailure(webSocket, t, response);
}
});
client.newCall(ws.request()).execute();
jetty httpclient
比较偏门, 算了, 不说了.
http://www.eclipse.org/jetty/