post请求需要给请求体放数据参数进去 但是又有很多种格式 常见的是json格式
下面是2种格式的数据的区别和用法: 如果不按类型给对应的类型数据的话会报400的错误的!
"application/json" 这种ContentType类型的就不多说了直接转成json字符串可以了放进
StringEntity entity = new StringEntity(jsonStr, "UTF-8");
下面是例外一种格式:
private String Post(String address, Map<String,String> params) {
String result = null;
String serverURL = address;
HttpPost httpRequest = new HttpPost(serverURL);//
HttpResponse httpResponse = null;// 发出http请求
try {
StringEntity reqEntity = new UrlEncodedFormEntity(converMap(params), HTTP.UTF_8);
reqEntity.setContentType("application/x-www-form-urlencoded");
httpRequest.setEntity(reqEntity);
httpResponse = HttpClientFactory.getInstance().execute(httpRequest);
if (httpResponse.getStatusLine().getStatusCode() == 200) {
result = EntityUtils.toString(httpResponse.getEntity(), "UTF-8");// 获取相应的字符串
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
//把map转换为x-www-form-urlencoded这种contentType的数据格式放进entity
private List<NameValuePair> converMap(Map<String,String> params){
List<NameValuePair> result = new ArrayList<NameValuePair>();
String key = "";
Set<String> keys = params.keySet();
for(Iterator it = keys.iterator(); it.hasNext();){
key = (String)it.next();
result.add(new BasicNameValuePair(key,params.get(key)));
}
return result;
}
下面地址是所有contenttype的地址:http://tool.oschina.net/commons?type=22013-05-17