java后台发post请求解决415的json入参报错问题



import java.io.BufferedReader;
import java.io.InputStreamReader;
import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;

import com.alibaba.fastjson.JSONObject;

public class HttpUtils {

	/**
     * 向指定 URL 发送POST方法的请求
     * 
     * @param url 发送请求的 URL
     * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
     * @return 所代表远程资源的响应结果
     */
    public static String sendJsonToPost(String url, String requestParam) throws Exception {
		 String result = "";
		JSONObject resultJsonObject=null;
		HttpPost post = null;
		try {
		HttpClient httpClient = new DefaultHttpClient();
//		String url="http://mineservice.minedata.cn/service/lbs/service/search/multi-trajectory?appKey=3b3bad1077b441f8868d2de8d464fca9";
		post = new HttpPost(url);
		post.setHeader("Content-type", "application/json;charset=utf-8");
		post.setHeader("Connection", "Close");
		StringEntity entity = new StringEntity(requestParam, java.nio.charset.Charset.forName("UTF-8"));
		entity.setContentEncoding("UTF-8");
		// 发送Json格式的数据请求
		entity.setContentType("application/json");
		post.setEntity(entity);
		System.out.println("post===" + post);
		HttpResponse response = httpClient.execute(post);

		// 检验返回码
		int statusCode = response.getStatusLine().getStatusCode();
		System.out.println(statusCode);
		String line=null;
		
		StringBuilder entityStringBuilder=new StringBuilder();
		BufferedReader in = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"),8*1024);
       while ((line = in.readLine()) != null) {
           result += line;
       }
		 
		resultJsonObject = JSONObject.parseObject(entityStringBuilder.toString());
		if (statusCode != HttpStatus.SC_OK) {
		//LogUtil.info("请求出错: "+statusCode);
		System.out.println("请求出错: " + statusCode);
		} else {
		int retCode = 0;
		String sessendId = "";
		// 返回码中包含retCode及会话Id
		for (Header header : response.getAllHeaders()) {
		if (header.getName().equals("retcode")) {
		retCode = Integer.parseInt(header.getValue());
		}
		if (header.getName().equals("SessionId")) {
		sessendId = header.getValue();
		}
		}
		}
		} catch (Exception e) {
		e.printStackTrace();
		} finally {
		if (post != null) {
		try {
		post.releaseConnection();
		Thread.sleep(500);
		} catch (InterruptedException e) {
		e.printStackTrace();
		}
		}
		
		}
		return result;
		}
    

}

注意:请求头需要加上"Content-type", "application/json;charset=utf-8"

post.setHeader("Content-type", "application/json;charset=utf-8");
   post.setHeader("Connection", "Close");

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值