JAVA中使用Apache HttpComponents Client的进行GET/POST请求使用案例
JAVA中使用Apache HttpComponents Client的进行GET/POST请求使用案例
一、简述需求
平时我们需要在JAVA中进行GET、POST、PUT、DELETE等请求时,使用第三方jar包会比较简单。常用的工具包有:
1、https://github.com/kevinsawicki/http-request
(对应Maven包:http://mvnrepository.com/artifact/com.github.kevinsawicki/http-
request)
2、http://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient/4.5.5
第1个包使用起来比较简单,如下:
package songxingzhu.utils.request;
import com.github.kevinsawicki.http.HttpRequest;
public class RequestUtils {
private static final String defaultCharset = "utf-8";
private static final int connectTimeoutInMissecond = 10000;
private static final int readTimeoutInMissecond = 30000;
public static RequestResult getJsonText(String url, String charset) {
if (charset == null) charset = defaultCharset;
HttpRequest request = HttpRequest.get(url).connectTimeout(connectTimeoutInMissecond).readTimeout(readTimeoutInMissecond);
String body = request.body(charset);
int code = request.code();
request.disconnect();
return new RequestResult(body, code);
}
}
本文主要讲第2个包的使用。
二、开发过程
如下图所示:
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.HttpClientUtils;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.junit.Test;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
public class HttpClientTest {
@Test
public void get() throws IOException {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet request = new HttpGet("https://xingzhu-song.chinacloudsites.cn/kvMapping?orgId=b11647e8-0e36-44fd-84fa-262c4fcfbe43");
request.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0");
CloseableHttpResponse response = httpClient.execute(request);
HttpEntity entry = response.getEntity();
int code = response.getStatusLine().getStatusCode();
System.out.println("\tcode:" + code);
String result = EntityUtils.toString(entry);
System.out.println("\tresult:" + result);
HttpClientUtils.closeQuietly(response);
HttpClientUtils.closeQuietly(httpClient);
}
@Test
public void postForm() throws IOException {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost request = new HttpPost("https://xingzhu-song.chinacloudsites.cn/monitoring/metric/definitions");
List<NameValuePair> list = new ArrayList<>();
list.add(new BasicNameValuePair("orgId", "b11647e8-0e36-44fd-84fa-262c4fcfbe43"));
list.add(new BasicNameValuePair("instanceId", "1b0acfbb-d7f2-4f0d-a026-734c686ee4ba"));
request.setEntity(new UrlEncodedFormEntity(list, "UTF-8"));
CloseableHttpResponse response = httpClient.execute(request);
HttpEntity entry = response.getEntity();
int code = response.getStatusLine().getStatusCode();
System.out.println("\tcode:" + code);
String result = EntityUtils.toString(entry);
System.out.println("\tresult:" + result);
HttpClientUtils.closeQuietly(response);
HttpClientUtils.closeQuietly(httpClient);
}
@Test
public void postJSON() throws IOException {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost request = new HttpPost("https://xingzhu-song.chinacloudsites.cn/kvMapping/valid?orgId=b11647e8-0e36-44fd-84fa-262c4fcfbe43");
String body = "{" +
" \"serviceId\": \"pip\",\n" +
" \"key\": \"pipDnsLabel\",\n" +
" \"value\": \"abcdefg\",\n" +
" \"dependenceOn\": {\"pipLocation\":\"chinanorth\"}\n" +
"}";
request.setEntity(new StringEntity(body, "UTF-8"));
request.setHeader("content-type", "application/json");
CloseableHttpResponse response = httpClient.execute(request);
HttpEntity entry = response.getEntity();
int code = response.getStatusLine().getStatusCode();
System.out.println("\tcode:" + code);
String result = EntityUtils.toString(entry);
System.out.println("\tresult:" + result);
HttpClientUtils.closeQuietly(response);
HttpClientUtils.closeQuietly(httpClient);
}
@Test
public void testUrl() throws URISyntaxException {
URIBuilder uriBuilder = new URIBuilder("https://xingzhu-song.chinacloudsites.cn");
uriBuilder.setPath("kvMapping");
uriBuilder.setCharset(Charset.forName("UTF-8"));
uriBuilder.setParameter("key1", "value1");
uriBuilder.setParameter("key2", "value2");
//uriBuilder.setUserInfo("username","password"); //https://username:password@xingzhu-song.chinacloudsites.cn/kvMapping?key1=value1&key2=value2
URI uri = uriBuilder.build();
System.out.println(uri);//https://xingzhu-song.chinacloudsites.cn/kvMapping?key1=value1&key2=value2
}
}
JAVA中使用Apache HttpComponents Client的进行GET/POST请求使用案例
https://www.dearcloud.cn/2018/05/09/20200310-cnblogs-old-posts/20180509-JAVA中使用ApacheHttpComponentsClient的进行GETPOST请求使用案例/