当我们需要post数据的时候,如果接收方接收的格式是application/json,我们可以按如下所示操作,将数据放入json体中。
如果对方接收格式是text/html要怎么将参数传递过去呢?
之前采取的方式是在将参数写在params中,如下图所示
发现对方还是取不到我post给他的参数。
正确操作如下
- 通过postman方式
将数据放入下图中的key,value位置。
- 通过代码post
将参数params(jsonObject格式) ,转成kv 结构 , 拼接到x-www-form-urlencoded中的key value下
代码参考:
DefaultHttpClient httpClient = new DefaultHttpClient();
String queryString=MapUtils.map2QueryString(params).substring(1);//分割成一对对kv
HttpPost method = new HttpPost(url);
StringEntity entity = new StringEntity(queryString,"utf-8");
entity.setContentEncoding("UTF-8");
entity.setContentType("application/x-www-form-urlencoded" );//这边注意不是设置成x-www-form-urlencoded
method.setEntity(entity);//
try {
HttpResponse result = httpClient.execute(method);
JSONObject jsonResult = null;
String str = "";
Header[] headers = result.getAllHeaders();
for (Header header : headers)
{
System.out.println(header.toString());
}
/** 读取服务器返回过来的json字符串数据 **/
str = EntityUtils.toString(result.getEntity());
/** 把json字符串转换成json对象 **/
jsonResult = JSONObject.fromObject(str);
System.out.println(jsonResult);
} catch (Exception e) {
System.out.println("post请求提交失败:" + url);
}