/**
* x-www-form-urlencoded方式的post请求
* x-www-form-urlencoded请求方式的请求报文格式为 ?key=value&key=value
* @param url
* @param heapMap 头信息
* @param bodyMap 请求体
*/
import org.apache.http.NameValuePair;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import java.io.IOException;
private String formTranspond(String url, Map<String,String> headMap,Map<String,String> bodyMap) {
String result = "";
CloseableHttpClient httpClient = null;
HttpPost httpPost = null;
List<org.apache.http.NameValuePair> nvps = new ArrayList<>(); //用于存放请求体内容
//请求体封装
if(null != bodyMap && bodyMap.size() != 0){
for(String paramKey : bodyMap.keySet()){
//new BasicNameValuePair(key值,键值)
nvps.add(new BasicNameValuePair(paramKey,paramMap.get(paramKey)));
}
}
try {
// 1 创建HttpClinet,相当于打开浏览器
httpClient = HttpClients.createDefault();
// 2 创建HttpPost请求方式
httpPost = new HttpPost(url);
//请求头信息封装
ResponseHandler<String> responseHandler = new BasicResponseHandler();
if(null != headMap && headMap.size() != 0){
for(String headKey : headMap.keySet()){
//new BasicNameValuePair(key值,键值)
httpPost.setHeader(headKey,paramMap.get(headKey)));
}
}
httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded");
// 3 设置post请求的参数
httpPost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8"));
// 4 发送HttpPost请求,获取返回值
result = httpClient.execute(httpPost);//调接口获取返回值时,必须用此方法
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
亲测可用 纯手工敲码有问题联系 谢谢!