因此,我正在使用GET在我的Java项目中调用一个API(此API用于发送SMS).
这是API URL:
http://xxxxx.smsAPI.xx/xxxx/xxxx.aspx?user=username&password=password&msisdn=xxxxxx&sID=1111111&msg=test%20msg&fl=0
当我在浏览器中拨打电话时,我得到了很好的响应,如下所示:
{"ErrorCode":"000","ErrorMessage":"Success","JobID":"ID","MessageData":[{"Number":"xxxxxxx","MessageParts":[{"Msgid":"ID","PartID":1,"Text":"test msg"}]}]}
但是,当我在项目中进行“呼叫”时,会收到相同的消息,但文本字段如下所示:
"Text":"test%20msg"
并且发送到手机的文本与“”一起发送,这不是我想要的,响应错误.
这是我目前的Java代码:
UriComponentsBuilder builder = UriComponentsBuilder .fromUriString(env.getProperty("smsProvIDerUrl")) // Add query parameter .queryParam("user",env.getProperty("smsUser")) .queryParam("password",env.getProperty("smsPassword")) .queryParam("msisdn",new Object[] {number}) .queryParam("sID",sendedID) .queryParam("msg",body) .queryParam("fl",env.getProperty("smsFl")); RestTemplate template = this.restTemplate(); List<httpMessageConverter<?>> messageConverters = new ArrayList<httpMessageConverter<?>>(); MapPingJackson2httpMessageConverter converter = new MapPingJackson2httpMessageConverter(); converter.setSupportedMediaTypes(Arrays.asList(MediaType.TEXT_HTML)); messageConverters.add(converter); template.setMessageConverters(messageConverters); SmsResponseDTO response = template.getForObject(builder.toUriString(),SmsResponseDTO.class);
这是在浏览器上发送的标头:
Content-Type: text/HTML; charset=utf-8
在使用wireshark获取数据包之后,我发现这是从Java发送的标头
Accept: text/HTML\r\n
我已经尝试添加UTF-8字符集,但是它没有起作用,而且我认为utf-8是默认设置的,所以我不确定这是否是问题,我认为它与标题im不确定有关.
谢谢!
最佳答案您最有可能对请求URI进行两次编码.首先,确认正文中不包含该正文,请确保这是纯文本消息.然后使用以下命令将UriComponentsBuilder手动转换为String:
String uri = UriComponentsBuilder .fromUriString(env.getProperty("smsProvIDerUrl")) // Add query parameter .queryParam("user",env.getProperty("smsUser")) .queryParam("password",env.getProperty("smsPassword")) .queryParam("msisdn",new Object[] {number}) .queryParam("sID",sendedID) .queryParam("msg",body) .queryParam("fl",env.getProperty("smsFl")) .encode() .build() .toUriString();
并确认URI包含& msg = test msg而不包含& msg = test%20msg.请注意,双重编码会将%更改为%. 总结
以上是内存溢出为你收集整理的java-无法提出正确的请求Rest Template 全部内容,希望文章能够帮你解决java-无法提出正确的请求Rest Template 所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)