在做接入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后一直无法在连接服务器的更多相关文章

  1. ftp搭建后外网无法连接和访问阿里云服务器(非软件)

    阿里云服务器由于性价比高,是不少企业建站朋友们的首选.而在购买阿里云服务器后,不少客户反映其在搭建FTP后出现外网无法访问的问题,这里特意搜集整理了关于ftp搭建后外网无法连接和访问的问题,提供以下解 ...

  2. <转>Unity3D研究院之C#使用Socket与HTTP连接服务器传输数据包

    最近项目中需要使用HTTP与Socket,把自己这段时间学习的资料整理一下.有关Socket与HTTP的基础知识MOMO就不赘述拉,不懂得朋友自己谷歌吧.我们项目的需求是在登录的时候使用HTTP请求, ...

  3. SSH无法连接服务器

    服务器版本如下: @kelWEB4:/etc# lsb_release -a LSB Version: :core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd ...

  4. 【SQLServer】使用T-SQL访问远程数据库:openrowset 和 openquery 以及连接服务器的创建

    █ 启用/关闭Ad Hoc Distributed QueriesAd Hoc Distributed Queries服务默认是关闭的,要使用openrowset 和 openquery访问远程数据库 ...

  5. SqlServer中创建Oracle连接服务器

    转自太祖元年的:http://www.cnblogs.com/jirglt/archive/2012/06/10/2544025.html参考:http://down.51cto.com/data/9 ...

  6. (转)OpenVPN使用HTTP代理连接服务器

    原文地址:http://www.365mini.com/page/18.htm 在一些公司或者其他受限的网络环境中,使用的是HTTP代理服务器上网.在这种情况下,使用OpenVPN客户端可能无法连接服 ...

  7. 【解决】WordPress FTP连接服务器时出错,请检查设置,WordPress需要访问您网页服务器的权限

    刚装好wordpress,发现后台预装了两个插件,想删掉,结果要登录FTP,死活登不上去,提示"连接服务器时出错,请检查设置,WordPress需要访问您网页服务器的权限",网上也 ...

  8. 无法远程连接服务器上的mysql

    使用mysql管理工具连接服务器删过得mysql,显示连接被拒绝,但是在服务器上是可以登录mysql的. 无法远程连接通常以下几种情况: 首先,关闭mysql.        service mysq ...

  9. .Net Core建站(4):FTP发布项目及连接服务器数据库

    总感觉,今天(2018-1-14)下午写不完这篇,虽然蛮简单,只是点点点,,, 主要是记录两个, 1.连接服务器的数据库 2.项目FTP发布到服务器 使用数据库:SQL Service 2017 使用 ...

  10. PUTTY无法远程连接服务器故障解决[转]

    对于一个刚刚了解putty工具的新手来说,在putty工具使用中有时出现了问题而无法解决.今天就来介绍怎么解决putty无法远程连接服务器的故障. 用putty远程连接服务器时,提示错误 server ...

随机推荐

  1. [Javascript摸鱼记录] 关于js简单字符删减替换增加插入追加前中后处理

    以前总是怕死js如其名,能让我入坑润不出来,然后最近被迫写点静态html,又要用到数值运算处理, 于是又开启了「好几十个标签栏解决一个问题」的"探索路程",顺便记录一下摸鱼结果希望 ...

  2. faker函数造数据

    from faker import Fakerimport timeimport datetimet = time.time()import random# fake= Faker()# fake.n ...

  3. TIDB-DM数据迁移第一部(安装部署)

    官方连接: https://docs.pingcap.com/zh/tidb/stable/dm-overview 架构: 1.安装DM download https://tiup-mirrors.p ...

  4. mysql问题汇总含解决方案

    MySQL,插入数据提示"The table `xxx` is full" 背景:MEMORY引擎,hash索引 解决方法 1. 查看当前设置的table_size show va ...

  5. MXPlayer使用第三方解码器

    MXPlayer内置解码没法播放EAC3音频,可以添加第三方解码器解决 https://github.com/USBhost/MX_FFmpeg 不清楚自己什么平台选择mx_aio.zip,在MXPl ...

  6. form 常用

    1.input输入数字校验 <el-input class="timeRange" type="number" v-model="value & ...

  7. 在C++创建动态数组

    计算首行两数相加 #include <iostream>11 #include <vector> using namespace std; int main() { vecto ...

  8. CF1793E Velepin and Marketing

    个人思路: 从小到大排序,因为一定先满足小的,再满足大的. 分组时,我们发现,同一组内的数在排序后的序列内连续,这样更优.因为(不会证). 我们预处理出对于每个出书数量的答案,查询时直接输出即可.我们 ...

  9. 781. 森林中的兔子 (Medium)

    问题描述 781. 森林中的兔子 (Medium) 森林中有未知数量的兔子.提问其中若干只兔子 "还有多少只兔子与你(指被提问的兔子)颜色相同?" ,将答案收集到一个整数数组 an ...

  10. android 集成友盟实现 第三方分享 登录(qq,新浪,微信)

    其实友盟的文档写的非常详细了,在这只是记录一下开发过程中遇到过的坑. 开发流程,先到友盟的官网注册账号创建应用,友盟的文档地址:http://dev.umeng.com/social/android/ ...