出现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 ...
随机推荐
- Linux中 cat查询文件指定内容-并输入到指定文件内
常用: ① cat xxx.log | grep -C 20 "查询关键字" ② grep -E '1805|1905' CloudPayment.log > out.log ...
- 梦想Android版CAD控件(安卓CAD二次开发,安卓CAD控件)2023.02.26更新
下载地址:https://www.mxdraw.com/ndetail_40240.html1. 增加willBeReturnStart事件2. 增加使用OpenGL缓存3. 优化界面响应时间4. 修 ...
- CC2530
代码操作外设的一般步骤:• 1. 将代码编译成CPU能识别的语言• 2. cpu解析执行代码流• 3. 然后通过总线找到外设连接的控制器的寄存器(即SFR),通过设置这些寄存器,来指挥控制器工作.
- 技嘉b75m-d3v在nvme固态安装win7并且oem激活的实现过程
本篇文章主要讲述了实现台式机主板oem激活win7以及旧平台主板使用nvme固态安装win7的过程 事情的起因是我去年在小黄鱼买了台戴尔n4110,今年买了台惠普银河舰队2代,并且把里面128GB的n ...
- Windows 10 与Windows11 功能比较(红字为不同点)
Windows 10 与Windows11 功能比较(红字为不同点)
- 04jsp(2)
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...
- Devexpress WPF ChartControl 多Y轴
<Window x:Class="DXApplication4.MainWindow" xmlns="http://schemas.microsoft.com/wi ...
- 有null值的子查询,子查询加排序,速度大幅提升
意外发现,如果子查询结果有大量null值,加上一个排序,最后查询速度飞起
- leetcode 剑指offer小结
栈与队列 剑指 Offer 09. 用两个栈实现队列 使用两个堆栈,一个输出栈,另一个输入栈.队列入队:直接将元素压入输入栈,队列出队:如果输出栈为空,将输入栈元素压入输出栈,再将输出栈元素出栈. 查 ...
- dart extends 覆盖规则
1,不覆写super的变量,child会自动继承super的变量.即使是在child里给super赋值,child里也是可以访问到的,可能是因为引用的关系. 2,只要覆写了super的变量,只给sup ...