首页 > 试题

respon

更新时间:2022-12-07 15:54:18 阅读: 评论:0

给我一个太阳作文-两句半


2022年12月7日发(作者:数字电路答案)

解决httpClient调⽤返回“ip:portfailtorespond”问题

前⾔

最近项⽬中涉及端对端接⼝的调⽤,由于实时性要求不是很⾼和⼀些其他原因,采⽤了http协议的⽅式,使⽤HttpClient类来完成接⼝

的调⽤,出现了⼀个⾮常奇怪的“failtoRespond”的问题。

正⽂

问题出现场景描述

本次采⽤的httpClient类在之前项⽬中使⽤过,post和get⽅法是可以完成顺利的接⼝调⽤的,本次调⽤的接⼝,⽤postman调⽤是

可以顺利调通的,但是在程序中⽤httpClient调⽤出现的问题却显得莫名其妙;

Postman测试接⼝:显⽰调⽤正常

程序中调⽤部分代码:

Gsongson=newGson();

//设置接⼝参数

EntranceRecordCommandcmd=

r().device_id(deviceId).data(cmdList).build();

StringjsonParam=String(cmd);

("Param-{}",jsonParam);

Stringresult=null;

try{

//接⼝调⽤

result=("10.18.132.87:8090/report/temperature?key=x5bY2tM&signature=ng8h3prl0va9q",

jsonParam,

"utf-8");

("result--{}",result);

}catch(Exceptione){

("invokeexception!");

}

HttpUtils中部分代码:

publicstaticStringdoPost(Stringurl,StringjsonStr,Stringchart){

HttpClienthttpClient=null;

HttpPosthttpPost=null;

Stringresult=null;

try{

httpClient=acceptsUntrustedCertsHttpClient();

httpPost=newHttpPost(url);

StringEntityentity=newStringEntity(jsonStr);

ity(entity);

HttpResponrespon=e(httpPost);

if(respon!=null){

HttpEntityresEntity=ity();

intstatusCode=tusLine().getStatusCode();

if(statusCode!=_OK){

("invokefail");

return"";

}

if(resEntity!=null){

result=ng(resEntity,chart);

}

}

}catch(Exceptionex){

tackTrace();

}

returnresult;

}

Idea中控制台信息

ResponException:10.18.132.87:8090failedtorespond

问题解决

尝试⼀

⼀开始还以为是传输的json参数的问题,换⽤了fastjson这⼀Json对象转换⼯具类,发现还是同样的问题;

尝试⼆

百度了⼀下,好多⽂章都在说连接失效问题,是要调⼤超时时间,发现我这情况并不同,我这⾥就⼀个http链接,⽽且还没有到默认超

时时间,所以这个⾏不通;

尝试三

改了下httpClient类中doPost⽅法的⼀个参数,问题解决!

publicstaticStringdoPost(Stringurl,StringjsonStr,Stringchart){

HttpClienthttpClient=null;

HttpPosthttpPost=null;

Stringresult=null;

try{

httpClient=acceptsUntrustedCertsHttpClient();

httpPost=newHttpPost(url);

//原来代码

StringEntityentity=newStringEntity(jsonStr);

//修改后代码,加了⼀个ATION_JSON

StringEntityentity=newStringEntity(jsonStr,ATION_JSON);

ity(entity);

HttpResponrespon=e(httpPost);

……

原因分析

因为doPost⽅法中第⼆个参数为接⼝需要的参数,是String类型,⽽ATION_JSON表明要发送到服务端的数

据流主体是序列化的JSON字符串,所以要加⼀个contentType;⾄于之前的为什么可以,我猜可能是跟这个接⼝有关,这个接⼝url后⾯拼

了requestParam的两个字段,可能是,抽空要再验证下。

总结

感谢您的耐⼼阅读,希望对您有些帮助!

本文发布于:2022-12-07 15:54:18,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/88/60475.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:肥皂英文
下一篇:等价无穷大
标签:respon
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图