解决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小时内删除。
留言与评论(共有 0 条评论) |