Utilizzando HttpClient
4.1.3, ho scritto il seguente codice:Apache HttpClient è throwng 500s HTTP, ma non è in grado di riprodurre in un browser
HttpClient httpClient = HttpClientFactory.newHttpClient();
HttpGet httpGet = new HttpGet("some/url/to/hit");
HttpResponse httpResp = httpClient.execute(httpGet);
int statusCode = httpResp.getStatusLine().getStatusCode();
if(statusCode != HttpStatus.SC_OK)
throw new Exception(/* ... */);
che sta diventando HTTP 500 risposte (come si trova nel httpResp.getStatusLine().getStatusCode()
) da un particolare URL e lanciare l'eccezione.
Il fatto è che quando si passa all'URL "in errore" in un browser, funziona perfettamente.
Allora io mi chiedo:
- Potrebbe essere
HttpClient
timeout, cortocircuitando il ciclo di richiesta-risposta, e solo a me dare un HTTP 500? - Cos'altro potrebbe succedere qui? Come è possibile che
HttpClient
mi dia 500 se il browser sta visualizzando perfettamente la pagina per lo stesso URL esatto?
Grazie in anticipo!
Provare a eseguire il debug della richiesta dal browser web. Forse ciò che causa il tuo problema è che non stai impostando le intestazioni previste dal server. – deadlock
Quale server stai colpendo? Attiva la registrazione delle richieste per vedere la tua richiesta in arrivo. Hai accesso ai log degli errori sul server? Se restituisce un 500, dovrebbero esserci dei log. – jalynn2
@ jalynn2 - Come accendere la registrazione delle richieste? È un costrutto HttpClient o stai parlando di qualcosa come la console di Firebug? – IAmYourFaja