HttpURLConnection奇怪问题:用IP时windows,linux都能连,但用域名时linux下却报connection refused

23 篇文章 0 订阅
最近在做WebService时,由于要返回结果给调用接口的商户,所以用HttpURLConnection来连接商户提供的返回地址,再将结果信息送到此地址上去,在这个过程中,如果商户提供的地址是IP地址的话,就不会有问题,但有时候商户提供的是域名的地址,却是报出了:Connection refused 异常。 我又将代码在自己的机器上测试了一下,发现在自己的windows下,连接域名是没问题的!?一放到服务器上(Linux)就会报异常!下面是简化代码:
Java代码   收藏代码
  1. URL url = new URL(test_url);  
  2. HttpURLConnection connect = (HttpURLConnection) url.openConnection();  
  3. connect.setReadTimeout(30000);  
  4. connect.setConnectTimeout(10000);  
  5.   
  6. connect.setRequestMethod("POST");  
  7.   
  8. connect.setDoInput(true);  
  9. connect.setDoOutput(true);  
  10.   
  11. connect.getOutputStream().write(htask.getParams().getBytes("GBK"));  
  12.   
  13. connect.getOutputStream().flush();  
  14. connect.getOutputStream().close();  
  15. byte[] bts = new byte[250];  
  16. connect.getInputStream().read(bts);  

如果test_url是用IP地址的,没问题,如果是域名的,那就会在connect.getOutputStream().write()这句时报异常
查资料后得到一种说法:
在Java编程使用HttpClient的过程中,因为jre默认会对域名进行缓存以提升域名解析效率,但是目前国内的很多连锁店或Web程序用户由于经济的原因,采用了ADSL + 动态域名解析(如花生壳)的方式来进行网络程序访问,ISP为ADSL提供的ip地址一般都会定期(广东为2天一次)强制修改,这样,就会HttpClient使用中出现故障。

针对这个问题,可以通过修改jdk\jre\lib\java.security 文件来得以解决。具体的修改内容如下:
# NOTE: setting this to anything other than the default value can have
#      serious security implications. Do not set it unless
#      you are sure you are not exposed to DNS spoofing attack.
#
networkaddress.cache.ttl=0
# The Java-level namelookup cache policy for failed lookups:
#
# any negative value: cache forever
# any positive value: the number of seconds to cache negative lookup results
# zero: do not cache
#
# In some Microsoft Windows networking environments that employ
# the WINS name service in addition to DNS, name service lookups
# that fail may take a noticeably long time to return (approx. 5 seconds).
# For this reason the default caching policy is to maintain these
# results for 10 seconds.

按这种方法修改后,没有得到解决

各位高手看看是不是什么其它原因?有什么其它解决办法?


最简单做法自己连接DNS服务器查域名对应的ip


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值