java - 是什么导致 HttpHostConnectException?

标签 java exception http-host

我的网站在“搜索”中有自动完成/提前输入功能。我看到有一段时间他们是与之相关的异常(exception)。我们正在使用代理服务器。

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 应用程序发出的请求

最佳答案

“连接被拒绝”错误发生在您尝试打开到当前没有任何正在监听连接的 IP 地址/端口的 TCP 连接时。如果没有任何监听,服务器端的操作系统将“拒绝”连接。

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

  • 您正在与之通话的服务器(“proxy.xyz.com”/端口 60)正在上下波动,或者
  • 在您的客户端和代理之间有一些东西1间歇性地向一个不工作的主机发送请求,或者其他东西。

Is this possible that this exception is caused when a search request is made from Android applications as our website don't support a request is being made from android applications.

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


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

关于java - 是什么导致 HttpHostConnectException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15546589/

相关文章:

java - 如何在 Java 中对 BigInteger 执行 'pre increment' 操作?

java - 类不是抽象的,不会重写抽象方法actionPerformed(ActionEvent)

java - NPE on spring autowires form TestExecutionListener

c# - 调用 SuspensionManager.SaveAsync() 时出现异常

java - 为什么我们不能使用 RuntimeException 而不是创建自定义异常?

java - JFrame 未抛出 IndexOutOfBoundsException

php - 用于关键任务的 php HTTP_HOST 和 HTTP_REFERER 的可靠性

java - Liferay portlet 中的自定义 servlet/jsp

Apache 反向代理: how to forward proxy server's HTTP_HOST

asp.net - ServerVariables ["HTTP_HOST"] 和 ServerVariables ["SERVER_NAME"] 有什么区别?