出现SocketTimeoutException后一直无法在连接服务器
在做接入sdk功能的时候,经常出现一个问题,内网向外网服务器建立连接并发送数据经常会报SocketTimeoutException这个错误,且一旦出现便大几率再也连不上了。修改之前的代码为:
public static String httpPost(String url, Map<String, String> paramMap, int timeout)
throws HttpException, IOException { List<NameValuePair> valueList = new ArrayList<NameValuePair>();
Iterator<String> it = paramMap.keySet().iterator();
while (it.hasNext()) {
String key = it.next();
String value = paramMap.get(key);
NameValuePair nv = new NameValuePair(key, value);
valueList.add(nv);
} NameValuePair[] valueArray = valueList.toArray(new NameValuePair[0]); String response = null;
HttpClient client = new HttpClient();
client.getParams().setCookiePolicy(CookiePolicy.IGNORE_COOKIES); setTimeout(client, timeout); PostMethod method = new PostMethod(url); method.getParams().setContentCharset("UTF-8");
method.setRequestBody(valueArray); int status = client.executeMethod(method);
if (status != HttpStatus.SC_OK) {
return response;
} response = method.getResponseBodyAsString(); return response;
}
查了一些资料,试着捕获异常后,清空连接池解决,修改后的代码为:
public static String httpPost(String url, Map<String, String> paramMap, int timeout)
throws HttpException, IOException {
String response = " null ";
HttpClient client = new HttpClient();
try{
List<NameValuePair> valueList = new ArrayList<NameValuePair>();
Iterator<String> it = paramMap.keySet().iterator();
while (it.hasNext()) {
String key = it.next();
String value = paramMap.get(key);
NameValuePair nv = new NameValuePair(key, value);
valueList.add(nv);
} NameValuePair[] valueArray = valueList.toArray(new NameValuePair[0]); client.getParams().setCookiePolicy(CookiePolicy.IGNORE_COOKIES); setTimeout(client, timeout); PostMethod method = new PostMethod(url); method.getParams().setContentCharset("UTF-8");
method.setRequestBody(valueArray); int status = client.executeMethod(method);
if (status != HttpStatus.SC_OK) {
return response;
} byte[] res = method.getResponseBody();//.getResponseBodyAsString();
response = new String(res);
}catch(Exception e){
closeIdleSocket(client);
throw(e);
}
return response;
} public static void closeIdleSocket(HttpClient client){
client.getHttpConnectionManager().closeIdleConnections(50000);
}
目前这样修改之后暂时没有在出现连接超时问题了,但无法确认这个就是根源所在,所以还在持续验证中。
出现SocketTimeoutException后一直无法在连接服务器的更多相关文章
- ftp搭建后外网无法连接和访问阿里云服务器(非软件)
阿里云服务器由于性价比高,是不少企业建站朋友们的首选.而在购买阿里云服务器后,不少客户反映其在搭建FTP后出现外网无法访问的问题,这里特意搜集整理了关于ftp搭建后外网无法连接和访问的问题,提供以下解 ...
- <转>Unity3D研究院之C#使用Socket与HTTP连接服务器传输数据包
最近项目中需要使用HTTP与Socket,把自己这段时间学习的资料整理一下.有关Socket与HTTP的基础知识MOMO就不赘述拉,不懂得朋友自己谷歌吧.我们项目的需求是在登录的时候使用HTTP请求, ...
- SSH无法连接服务器
服务器版本如下: @kelWEB4:/etc# lsb_release -a LSB Version: :core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd ...
- 【SQLServer】使用T-SQL访问远程数据库:openrowset 和 openquery 以及连接服务器的创建
█ 启用/关闭Ad Hoc Distributed QueriesAd Hoc Distributed Queries服务默认是关闭的,要使用openrowset 和 openquery访问远程数据库 ...
- SqlServer中创建Oracle连接服务器
转自太祖元年的:http://www.cnblogs.com/jirglt/archive/2012/06/10/2544025.html参考:http://down.51cto.com/data/9 ...
- (转)OpenVPN使用HTTP代理连接服务器
原文地址:http://www.365mini.com/page/18.htm 在一些公司或者其他受限的网络环境中,使用的是HTTP代理服务器上网.在这种情况下,使用OpenVPN客户端可能无法连接服 ...
- 【解决】WordPress FTP连接服务器时出错,请检查设置,WordPress需要访问您网页服务器的权限
刚装好wordpress,发现后台预装了两个插件,想删掉,结果要登录FTP,死活登不上去,提示"连接服务器时出错,请检查设置,WordPress需要访问您网页服务器的权限",网上也 ...
- 无法远程连接服务器上的mysql
使用mysql管理工具连接服务器删过得mysql,显示连接被拒绝,但是在服务器上是可以登录mysql的. 无法远程连接通常以下几种情况: 首先,关闭mysql. service mysq ...
- .Net Core建站(4):FTP发布项目及连接服务器数据库
总感觉,今天(2018-1-14)下午写不完这篇,虽然蛮简单,只是点点点,,, 主要是记录两个, 1.连接服务器的数据库 2.项目FTP发布到服务器 使用数据库:SQL Service 2017 使用 ...
- PUTTY无法远程连接服务器故障解决[转]
对于一个刚刚了解putty工具的新手来说,在putty工具使用中有时出现了问题而无法解决.今天就来介绍怎么解决putty无法远程连接服务器的故障. 用putty远程连接服务器时,提示错误 server ...
随机推荐
- ServiceEntry与WorkloadEntry
ServiceEntry: 用于将未能自动添加至网格中的服务,以手形式使得内发 现机制能够访问或路由到这些服务.网格外部的服务 运行于 Kubernetes 上,但却非为 Istio 网格 ...
- 2.4G收发一体芯片NRF24L01P跟国产软硬件兼容 SI24R1对比
超低功耗高性能 2.4GHz GFSK 无线收发器芯片Si24R1Si24R1 是一颗工作在 2.4GHz ISM 频段,专为低功耗无线场合设计,集成嵌入式ARQ 基带协议引擎的无线收发器芯片.工作频 ...
- 4口高速USB 2.0 HUB控制器 DPU1.1S,兼容替代FE1.1S
DPU1.1S是一款高性能.低功耗 4 口高速 USB2.0HUB 控制器,上行端口兼容高速 480MHz和全速 12MHz 两种模式,4个下行端口兼容高速480MHz.全速12MHz.低速 1.5M ...
- 梦想Android版CAD控件(安卓CAD二次开发,安卓CAD控件)2023.02.26更新
下载地址:https://www.mxdraw.com/ndetail_40240.html1. 增加willBeReturnStart事件2. 增加使用OpenGL缓存3. 优化界面响应时间4. 修 ...
- 关于github的自动化检测
github 中的 Some checks were not successful什么意思呢? 在 GitHub 上,当您向存储库提交拉取请求时,如果存在自动化的检查(例如CI/CD)或在 pul ...
- PyQt5弹框定时关闭(python)
PyQt5使用QMessageBox,可以设置在几秒后关闭 (作者使用的python3) info_box = QMessageBox()# 因为没使用这种方式 QMessageBox.inform ...
- yolov5学习遇到的困难
本文观看目标检测 YOLOv5 开源代码项目调试与讲解实战[土堆 x 布尔艺数]_哔哩哔哩_bilibili视频来部署yolov5环境. 问题1:pycocotools工具包安装问题,参照视频2解决W ...
- ubuntu 逻辑卷增加磁盘
使用lv* 相关的命令 lvdisplay lvscan ACTIVE '/dev/ubuntu-vg/ubuntu-lv' [<74.00 GiB] inherit lv ...
- nginx配置根据url的参数值进行转发
server { listen 8081; location / { set $tag ""; set $cs "/index/test/test"; prox ...
- idea 导入项目之后,只显示项目文件,不显示项目结构
导入项目之后,只显示项目文件,不显示项目结构 解决方法 1.点击file->project structure..->Modules 点击右上角+加号 ->import Module ...