Httpclient 发送 post 请求可以封装多格式的参数,这篇我们封装map格式的:
1、客户端代码如下:
public NmpResponse doPostMap(NmpRequest request) throws IOException {
logger.info("------------开始POST请求-nmpHttpClient-----------");
HttpClient httpClient = new HttpClient();
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(15000);
PostMethod postMethod = new PostMethod(NMP_ROOT_URL+request.getUrl());
postMethod = setHeaderAuthInfo(postMethod);
//添加请求参数
Map<String,String> params = request.getParams();
if(null != params && params.size()>0){
for(Map.Entry<String,String> param : params.entrySet()) {
String key = param.getKey();
String paramValue = params.get(key);
postMethod.addParameter(key, paramValue);
}
}
NmpResponse response = new NmpResponse();//自己封装的一个返回对象
try {
logger.info("------------开始执行POST请求,url:{}------------",NMP_ROOT_URL+request.getUrl());
int statusCode = httpClient.executeMethod(postMethod);
logger.info("------------POST请求结束,code={}------------",statusCode);
if (statusCode == 200){
response.setRespBody(postMethod.getResponseBody());
response.setResponseStr(postMethod.getResponseBodyAsString());
response.setRespHeaders(postMethod.getRequestHeaders());
} else{
logger.error("请求出错code={}:{}" ,statusCode ,postMethod.getStatusLine());
}
} catch (IOException e){
logger.error("请求出错IOException:{}" ,e);
throw e;
} finally {
postMethod.releaseConnection();
logger.info("------------结束POST请求-nmpHttpClient-----------");
}
return response;
}
2、服务端就可以用map 格式的数据接收参数了。