RestTemplat post 查询参数设置异常

      收到一个api文档接口,调用起来跟常规有些不同。需要再url上传参,还要在body传参。真是第一次见识到,参数都是json格式,也不知道这样设计的初衷是啥?接到了就干呗。

       直接在url上拼接参数,
https://xx?object=[{"createdBy":"one","createdDate":"2019-11-14 14:17:37","p
rice":"888888888"]
省略 json参数

然后执行直接抛出异常了 java.lang.IllegalArgumentException: Not enough variable values available to expand '"createdBy"'
真是蛋疼了,只能去查资料了。

@Override

 public <T> T execute(String url, HttpMethod method, RequestCallback requestCallback,

   ResponseExtractor<T> responseExtractor, Object... urlVariables) throws RestClientException {



   // 这里进行网络转码,因为我们传递的URL是字符串,最后都要统一转为URL,而且对于字符都应该进行网络编码,

   // 问题就出现在这里,我们如果自己手动把参数进行网络编码,那么问题就不会出现

  URI expanded = getUriTemplateHandler().expand(url, urlVariables);  

  return doExecute(expanded, method, requestCallback, responseExtractor);

 }

可以尝试spring 提供的url处理

 

UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(SPEKTRA_REJECTED_API_ORDERINFO_URL);
        builder.queryParam("object", "["+JSON.toJSONString(obj)+"]");

搞定,mark一下。参考资料https://my.oschina.net/heweipo/blog/704595

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值