在做接入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. Linux命令 日记

    命令 作用 备注 pwd 查看当前所在位置 Windows和虚拟机共享文件夹路径: cd / 打开根目录 cd /mnt/hgfs/ 共享文件夹位置路径

  2. PostgreSQL-14 安装配置-wsl_v1_ubuntu22.04

    环境准备 pgAdmin: Cisco2022 postgrep数据库: postgres: Postgres_2023 install https://learn.microsoft.com/en- ...

  3. 解决Maven资源导出失败问题

    由于 maven 的约定大于配置,maven 约定资源或配置文件放在 resources 目录下才能正常导出,但是如果我们将其放在 java 目录下,就需要在 pom.xml 添加如下配置,才能导出资 ...

  4. Android NDK build vsomeip3

    Build Boost for Android https://github.com/moritz-wundke/Boost-for-Android set the NDK_ROOT environm ...

  5. 一 MySQL的架构与历史1.1--1.4

    1.1 MySQL逻辑架构 最上层的服务并不是 MySQL 所独有的,大多数基于网络的客户端/服务器的工具或者服务都有类似的架构.比如连接处理.授权认证.安全等等. 第二层架构是MySQL比较有意思的 ...

  6. 搭建webssh和nginx反向代理

    0.前置条件,centos主机安装了python3和nginx   1.安装webssh pip3 install webssh   2.添加自定义服务 systemctl cat webssh # ...

  7. Android Custom View使用Databinding

    Android Custom View是可以使用 databinding 的 //java.lang.IllegalArgumentException: View is not a binding l ...

  8. ssh_remote_without_password

    2 machines, 1 called client , 1 called server , server need static ip address. client connects serve ...

  9. SQLSERVER 存储过程里 执行sql字符串 并返回结果

    -- Author: <Author,,Name>-- Create date: <Create Date,,>-- Description: 停用/启用12个月销售目标--e ...

  10. 2170. 使数组变成交替数组的最少操作数 (Medium)

    问题描述 2170. 使数组变成交替数组的最少操作数 (Medium) 给你一个下标从 0 开始的数组 nums ,该数组由 n 个正整数组成. 如果满足下述条件,则数组 nums 是一个 交替数组 ...