@awsekfozc
2017-07-19T01:58:28.000000Z
字数 3413
阅读 1445
httpclient
import org.apache.http.NameValuePair;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.config.RequestConfig;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.URIBuilder;import org.apache.http.entity.ContentType;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.io.IOException;import java.net.URISyntaxException;import java.util.ArrayList;import java.util.List;import java.util.Map;@Servicepublic class HttpClientService {@Autowiredprivate CloseableHttpClient httpClient;@Autowiredprivate RequestConfig requestConfig;/*** 执行GET请求** @param url* @return* @throws IOException* @throws ClientProtocolException*/public String doGet(String url) throws ClientProtocolException, IOException {// 创建http GET请求HttpGet httpGet = new HttpGet(url);httpGet.setConfig(this.requestConfig);CloseableHttpResponse response = null;try {// 执行请求response = httpClient.execute(httpGet);// 判断返回状态是否为200if (response.getStatusLine().getStatusCode() == 200) {return EntityUtils.toString(response.getEntity(), "UTF-8");}} finally {if (response != null) {response.close();}}return null;}/*** 带有参数的GET请求** @param url* @param params* @return* @throws URISyntaxException* @throws IOException* @throws ClientProtocolException*/public String doGet(String url, Map<String, String> params)throws ClientProtocolException, IOException, URISyntaxException {URIBuilder uriBuilder = new URIBuilder(url);for (String key : params.keySet()) {uriBuilder.addParameter(key, params.get(key));}return this.doGet(uriBuilder.build().toString());}/*** 执行POST请求** @param url* @param params* @return* @throws IOException*/public String doPost(String url, Map<String, String> params) throws IOException {// 创建http POST请求HttpPost httpPost = new HttpPost(url);httpPost.setConfig(this.requestConfig);if (params != null) {// 设置2个post参数,一个是scope、一个是qList<NameValuePair> parameters = new ArrayList<NameValuePair>();for (String key : params.keySet()) {parameters.add(new BasicNameValuePair(key, params.get(key)));}// 构造一个form表单式的实体UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(parameters, "UTF-8");// 将请求实体设置到httpPost对象中httpPost.setEntity(formEntity);}CloseableHttpResponse response = null;try {// 执行请求response = httpClient.execute(httpPost);return EntityUtils.toString(response.getEntity(), "UTF-8");} finally {if (response != null) {response.close();}}}/*** 执行POST请求** @param url* @return* @throws IOException*/public String doPost(String url) throws IOException {return this.doPost(url, null);}/*** 提交json数据** @param url* @param json* @return* @throws ClientProtocolException* @throws IOException*/public String doPostJson(String url, String json) throws ClientProtocolException, IOException {// 创建http POST请求HttpPost httpPost = new HttpPost(url);httpPost.setConfig(this.requestConfig);if (json != null) {// 构造一个form表单式的实体StringEntity stringEntity = new StringEntity(json, ContentType.APPLICATION_JSON);// 将请求实体设置到httpPost对象中httpPost.setEntity(stringEntity);}CloseableHttpResponse response = null;try {// 执行请求response = this.httpClient.execute(httpPost);return EntityUtils.toString(response.getEntity(), "UTF-8");} finally {if (response != null) {response.close();}}}}
在此输入正文