2013-03-21 130 views
8

我在搜索我的网站上有一个自动完成/键入提前功能。我看到他们有一段时间是与它相关的例外。我们正在使用代理服务器。什么导致HttpHostConnectException?

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应用程序发出搜索请求而导致此异常

+0

您的代理主机是否在端口60上运行?如果没有 - 那会导致连接被拒绝的消息。 – 2013-03-21 11:47:48

+0

它在同一端口上运行。这个例外也不会每次都发生。有时只是。 – pushya 2013-03-21 11:51:33

+0

不幸的是,你必须看看为什么代理拒绝连接。可能是代理配置中的错误? – 2013-03-21 11:53:36

回答

19

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

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

  • 你说(“proxy.xyz.com” /端口60)服务器会向上和向下,或
  • 您的客户端和代理之间存在一些问题,这些代理会间歇性地向非运行主机发送请求等。

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

这似乎不太可能。你说“连接被拒绝”异常消息说它是拒绝连接的代理,而不是你的服务器。除此之外,如果服务器不处理某些类型的请求,它仍然必须接受TCP连接,以便在它拒绝之前找出请求的内容。

+0

只是为了清除搜索请求将发送给另一个服务提供商,并且我们已在我们的网站上实施了他们的服务。我们所做的只是发送消费者的请求并将其发送给搜索服务提供商并显示他们发送的信息 – pushya 2013-03-21 12:00:54

+0

“您的客户端和代理之间存在某种情况,它会间歇性地向非运行主机发送请求,或者“你的意思是无功能主机? – pushya 2013-03-21 12:05:58

+0

除代理服务器之外的某些主机不期望这些连接请求;即它不能作为代理... – 2013-03-21 12:13:12

0

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

相关问题