是什么原因导致HttpHostConnectException?(What causes HttpH

2019-08-17 20:02发布

我有一个自动完成/输入寻址功能上搜索我的网站。 我看到一些他们的时间是关联的异常。 我们正在使用代理服务器。

org.apache.http.conn.HttpHostConnectException: Connection to http://proxy.xyz.com:60 refused    

at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:159)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:108)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:415)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554)
at com.xxx.dd.sone.integration.SearchDAO.getJSONData(SearchDAO.java:60)
at com.xxx.dd.sone.integration.SearchDAO.searchAutoCompleteResults(SearchDAO.java:560)
at com.xxx.dd.sone.presentation.util.SearchAutoCompleteUtil.doGet(SearchAutoCompleteUtil.java:26)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:845)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:242)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:352)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:236)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3254)
at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)
at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2163)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2074)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1512)
at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:255)
at weblogic.work.ExecuteRequestAdapter.execute(ExecuteRequestAdapter.java:22)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:147)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:119)

java.net.ConnectException:通过导致连接拒绝

下面是如何我已经编写

public HashMap<String, Object> getJSONData(String url)throws Exception {
    DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpParams params = httpClient.getParams();
    try {
        HttpConnectionParams.setConnectionTimeout(params, 10000);
        HttpConnectionParams.setSoTimeout(params, 10000);
    } catch (Exception e) {
        e.printStackTrace();
        throw e;
    }
    HttpHost proxy = new HttpHost(proxy.xyz.com, 60);
    ConnRouteParams.setDefaultProxy(params, proxy);
    URI uri;
    InputStream data = null;
        uri = new URI(url);
        HttpGet method = new HttpGet(uri);
        HttpResponse response=null;
        try {
        response = httpClient.execute(method);
        }catch(Exception e) {
            e.printStackTrace();
            throw e;
        }
        data = response.getEntity().getContent();
    Reader r = new InputStreamReader(data);
    HashMap<String, Object> jsonObj = (HashMap<String, Object>) GenericJSONUtil.fromJson(r);
    return jsonObj;
}

任何一个可以告诉我为什么我收到此异常只是一段时间? 这是可能的,当一个搜索请求是从为我们的网站不支持的请求被从Android应用程序做Android应用程序使这个异常引起的

Answer 1:

A“连接被拒绝”当你试图打开一个TCP连接的IP地址/端口,其中当前没有任何监听连接错误发生。 如果不听,在服务器端的OS“拒绝”的连接。

如果这是间歇发生,那么最有可能的解释是(IMO):

  • 和你谈话的服务器(“proxy.xyz.com” /端口60)的上升和下降,OR
  • 还有就是你的客户,并且间歇发送请求到非功能的主机,或者说代理之间的事情1。

这是可能的,当一个搜索请求是从为我们的网站不支持的请求被从Android应用程序做Android应用程序使这个异常引起的。

这似乎不太可能。 你说的“连接被拒绝”异常消息说,这是拒绝的连接,而不是你的服务器代理。 此外,如果一台服务器是要不能处理某些类型的请求时,它仍然必须接受TCP连接,找出该请求是什么...才可以拒绝它。


1 -例如,它可能是循环解析DNS名称不同的IP地址的DNS。 或者,它可能是一个基于IP的负载均衡。



Answer 2:

在我的情况的问题是缺少“S”在HTTP URL。 错误是:“HttpHostConnectException:连接到someendpoint.com:80 [someendpoint.com/127.0.0.1]失败:连接被拒绝”终点和IP明显变化,以保护网络。



文章来源: What causes HttpHostConnectException?