这个例子使用的是Apache HttpClient 4.5.7版本
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.7</version>
</dependency>
import com.alibaba.fastjson.JSON;
import org.apache.commons.beanutils.BeanMap;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
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.HttpPost;
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 java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @author Jack
* @date 2019年3月12日 下午4:56:14
* @version 1.0.0
*/
public class HttpClientUtils {
/**
*
* @param protocol 协议
* @param hostname 域名或者IP地址
* @param port 端口
* @param path 路径 如 /aa/query
* @param request 入参
* @param resCla 返回结果对象的类字面量
* @param <Y>
* @param <T>
* @return 返回对应的结果对象
* @throws Exception
*/
public static <Y,T> Y alaPost(String protocol, String hostname, String port, String path, T request,Class<Y> resCla) throws Exception{
String result=post( protocol, hostname, port, path, request);
Y response=resCla.newInstance() ;
try {
Map<String, Object> resMap = JSON.parse(result, Map.class);
//map转bean
BeanUtils.populate(response,resMap );
} catch (Exception e) {
throw new Exception("error");
}
return response;
}
/**
*
* @param protocol 协议
* @param hostname 域名或者IP地址
* @param port 端口
* @param path 路径 如 /aa/query
* @param request 入参
* @param <T>
* @return 字符串形式的返回结果
* @throws Exception
*/
public static <T> String post(String protocol, String hostname, String port, String path, T request)
throws Exception {
CloseableHttpClient httpclient = HttpClients.createDefault();
// url路径
HttpPost httpPost = new HttpPost(
protocol + "://" + hostname + ":" + port + path);
List<NameValuePair> nvps = new ArrayList<>();
// 设置参数
//bean转map
BeanMap map=new BeanMap(request);
map.forEach((k, v) -> nvps.add(new BasicNameValuePair( k.toString(), v.toString())));
// 设置参数编码
httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8"));
CloseableHttpResponse response = httpclient.execute(httpPost);
if (HttpStatus.SC_OK != response.getStatusLine().getStatusCode()) {
throw new Exception("error");
}
String result ;
try {
HttpEntity entity = response.getEntity();
// 获取返回结果
result = EntityUtils.toString(entity);
//关闭流
EntityUtils.consume(entity);
} finally {
response.close();
}
return result;
}
}
Comments | NOTHING