当前位置: 首页 > 面试题库 >

是什么导致HttpHostConnectException?

欧渝
2023-03-14
问题内容

我在搜索我的网站上具有自动完成/提前输入功能。我看到他们有时是一个例外。我们正在使用代理服务器。

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间歇性地向不起作用的主机发送请求,或其他东西。

当我们从Android应用程序发出搜索请求时可能会导致此异常,因为我们的网站不支持从android应用程序发出请求。

似乎不太可能。您说“连接被拒绝”异常消息表示拒绝连接的是代理,而不是服务器。此外,如果服务器不处理某些类型的请求,它仍必须接受TCP连接以找出请求的内容,然后才能拒绝该请求。

1-例如,可能是将DNS名称轮流解析为不同IP地址的DNS。也可以是基于IP的负载平衡器。



 类似资料:
  • 问题内容: 我将Java库打包为JAR,当我尝试从中调用方法时会抛出很多s。这些错误似乎随机出现。哪些类型的问题可能导致此错误? 问题答案: 这意味着你对库进行了一些不兼容的二进制更改,而无需重新编译客户端代码。 Java语言规范§13详细介绍了所有这些更改,最显着的是将非非私有字段/方法更改为,反之亦然。 根据新库重新编译客户端代码,你应该一切顺利。 更新:如果发布公共库,则应尽可能避免进行不兼

  • 问题内容: 据我了解,python模块永远不会导入两次,即该模块中的代码仅在首次导入时才执行。随后的import语句只需将模块添加到导入范围即可。 我有一个名为“ TiledConvC3D.py”的模块,但似乎已多次导入。我使用pdb在该模块的代码顶部打印堆栈。 这是从第一次执行模块开始的堆栈跟踪的结尾: 它将继续执行多次。但是,第二次调用的完整堆栈跟踪不会显示对的任何调用,因此不应执行这些执行:

  • 问题内容: 我的DAO实现在使用Tomcat7启动服务器时引发了不可序列化的异常。知道是什么原因造成的吗?我的其他DAO都没有这样做。 这是课程: 这是我的配置: 这是我的堆栈: 问题答案: 如果要序列化,则必须实现java.io.Serializable接口(您的堆栈跟踪指示已尝试将类的实例写入对象流)。 要序列化的实例以及该实例的对象图中的所有对象都必须全部可序列化。 从用于可序列化的java

  • 问题内容: 好吧,我试图理解并阅读可能导致它的原因,但我却无法理解: 我的代码中有这个地方: 事实是,当它尝试调用某些方法时,它将引发而不是其他预期的异常(特别是)抛出 。我实际上知道调用了什么方法,所以我直接转到该方法代码,并为应该抛出的行添加了一个块 ,它实际上按预期抛出。然而,当它上升时,以某种方式更改了上面的代码并没有 按预期进行。 是什么原因导致这种行为的?我该如何检查? 问题答案: 通

  • 问题内容: 即使模型类中没有验证约束,我也会收到此错误(所有成员变量均已正确设置,但我在创建对象时仍然遇到此异常)。如何调试此错误? 问题答案: 每个都有一个数组。每个显示了您要保留的bean的哪个属性被侵犯。正如@Arthur正确指出的那样,违反Java持久性注释的结果也以s 结尾。 要调试你的问题,我会暂时赶在并打印出每个如下:

  • 问题内容: 在Python控制台中: 给我: 为什么?有人可以用二进制给我解释这个特殊情况吗? 问题答案: 是。 是: 并且是: 这是在两个补1 1翻转所有位,将1加到结果数上,并将结果解释为幅度的 二进制表示形式 ,并添加一个负号(因为数字以1开头): 它是2,但是由于MSB是1 ,所以符号是负数。 值得一提: 想一想,您会发现它本质上是数字-它有两个值和,它们只是整数1和0的“自定义”版本,它