在本项目中调用外部接口(传递json数据,返回json数据)方法HttpClient

在本项目中调用外部接口(传递json数据,返回json数据)方法HttpClient解决一些小问题

/*
 *date 传递的json数据
 *port 接口地址
 *return 返回的json数据
 */
public static JSONObject doPost(JSONObject date, String port) {
		HttpClient client = HttpClients.createDefault();
		// 要调用的接口方法
		String url = port;
		HttpPost post = new HttpPost(url);
		JSONObject jsonObject = null;
		try {

			StringEntity s = new StringEntity(date.toString(), "utf-8");//此处为解决传输来的数据变成乱码的问题
			s.setContentEncoding("UTF-8");
			s.setContentType("application/json");

			post.addHeader("content-type", "text/xml;charset:utf-8");
			post.setEntity(s);
			HttpResponse res = client.execute(post);
			if (res.getStatusLine().getStatusCode() == HttpStatus.OK.value()) {//此处判断状态是否为200
				String result = EntityUtils.toString(res.getEntity());
				jsonObject = JSONObject.parseObject(result);// 返回json格式:
			}
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
		return jsonObject;

	}

问题:

1.在其他博客中有如下代码

StringEntity s = new StringEntity(date.toString());

使用后debug发现传输过去的中文总是???形式传递,随修改为

StringEntity s = new StringEntity(date.toString(), "utf-8");

成功解决

if (res.getStatusLine().getStatusCode() == HttpStatus.OK.value())

HttpStatus.OK.value()=200;

另 : 此例为基本调用外部接口,默认错误重试为3次,如果需要修改则需要继承接口重写部分方法

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值