19

Web サイトの検索にオートコンプリート/先行入力機能があります。私は時々彼らがそれに関連する例外であることを見ます。プロキシサーバーを使用しています。

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 アプリケーションから検索要求が行われたときに発生する可能性があります。これは、当社の Web サイトが Android アプリケーションからの要求をサポートしていないためです。

4

3 に答える 3

35

現在接続をリッスンしているものがない IP アドレス/ポートへの TCP 接続を開こうとすると、「接続が拒否されました」というエラーが発生します。何もリッスンしていない場合、サーバー側の OS は接続を「拒否」します。

これが断続的に発生している場合、最も可能性の高い説明は次のとおりです (IMO):

  • あなたが話しているサーバー (「proxy.xyz.com」/ポート 60) が起動または停止している、または
  • クライアントとプロキシの間に何か1があり、機能していないホストなどに断続的にリクエストを送信しています。

この例外は、Android アプリケーションから検索要求が行われたときに発生する可能性があります。これは、当社の Web サイトが Android アプリケーションからの要求をサポートしていないためです。

ありそうもない。「接続が拒否されました」という例外メッセージは、サーバーではなく、接続を拒否しているのはプロキシであると言っています。さらに、サーバーが特定の種類のリクエストを処理しない場合でも、TCP 接続を受け入れて、リクエストが何であるかを確認する必要があります...拒否する前に。


1 - たとえば、ラウンドロビンによって DNS 名が別の IP アドレスに解決される DNS である可能性があります。または、IP ベースのロード バランサーである可能性もあります。

于 2013-03-21T11:55:16.913 に答える