2013-03-21 16 views
8

Ho una funzione di completamento automatico/tipo avanti su Cerca per il mio sito web. Vedo che qualche volta la loro è un'eccezione associata ad essa. Stiamo usando un server proxy.Che cosa causa 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) 

causato da: java.net.ConnectException: Connection refused

Qui è il come che ho codificato

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; 
} 

uno può dire perché sto ottenendo questa eccezione solo qualche tempo ? è possibile che questa eccezione si verifichi quando viene effettuata una richiesta di ricerca da applicazioni Android in quanto il nostro sito Web non supporta la richiesta da applicazioni Android

+0

L'host proxy è in esecuzione sulla porta 60? In caso contrario, ciò comporterebbe il messaggio di connessione rifiutata. –

+0

È in esecuzione sulla stessa porta. Anche questa eccezione non si verifica ogni volta. solo alcune volte – pushya

+0

Sfortunatamente dovresti vedere perché il proxy sta negando la connessione. Forse un errore nella configurazione del proxy? –

risposta

19

Un errore "connessione rifiutata" si verifica quando si tenta di aprire un TCP connessione ad un indirizzo IP/porta dove non c'è niente attualmente in ascolto per le connessioni. Se nulla è in ascolto, il sistema operativo sul lato server "rifiuta" la connessione.

Se questo sta accadendo in modo intermittente, poi i più probabili spiegazioni sono (IMO):

  • il server si sta parlando ("proxy.xyz.com"/porto 60) per sta andando su e giù, OR
  • c'è qualcosa tra il client e il proxy che invia in modo intermittente richieste ad un host non funzionante o qualcosa del genere.

Questo è possibile che questa eccezione è causato quando una richiesta di ricerca è fatto da applicazioni Android come il nostro sito web non supportano una richiesta viene fatta da applicazioni Android.

Sembra improbabile. Hai detto che il messaggio di eccezione "connessione rifiutata" dice che è il proxy che rifiuta la connessione, non il tuo server. Inoltre, se un server non gestiva determinati tipi di richiesta, deve comunque accettare la connessione TCP per scoprire qual è la richiesta ... prima che possa rifiutarla.

+0

Solo per cancellare la richiesta di ricerca sta andando a un altro fornitore di servizi e abbiamo implementato il loro servizio sul nostro sito web. Tutto ciò che facciamo è inviare le richieste dal consumatore e inviarlo al provider di servizi di ricerca e visualizzare le informazioni inviate da loro – pushya

+0

"c'è qualcosa tra il client e il proxy che invia in modo intermittente richieste ad un host non funzionante, o qualcosa del genere "cosa intendi per host non funzionante? – pushya

+0

Alcuni host diversi dal server proxy che non si aspettano tali richieste di connessione; cioè non funziona come proxy ... –

0

Nel mio caso il problema era "s" mancante nell'URL HTTP. Errore: "HttpHostConnectException: Connetti a someendpoint.com:80 [someendpoint.com/127.0.0.1] non riuscito: Connessione rifiutata" Endpoint e IP ovviamente modificati per proteggere la rete.

Problemi correlati