Utilizzando HTTPClient di Apache – come si può vedere il raw richiesta stringa prima di essere inviato?

Per scopi di debug, mi piacerebbe vedere il raw richiesta che sta per essere inviato. C’è un modo per ottenere questo senza un monitor HTTP direttamente dall’API di HttpPost o HttpClient?

Ho trovato un po ‘ “quasi” domande duplicate, ma non per questo particolare

InformationsquelleAutor Eran Medan | 2012-05-31

 

4 Replies
  1. 29

    È possibile impostare alcune variabili di ambiente per HttpClient di Apache (esempio testato per 4.3.2).

    System.setProperty("org.apache.commons.logging.Log","org.apache.commons.logging.impl.SimpleLog");
    System.setProperty("org.apache.commons.logging.simplelog.showdatetime", "true");
    System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http.wire", "DEBUG");
    

    Ci sono anche alcune variabili per il debug:

    System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http.impl.conn", "DEBUG");
    System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http.impl.client", "DEBUG");
    System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http.client", "DEBUG");
    System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http", "DEBUG");
    
  2. 0

    Provare questo:

    HttpClient client = new HttpClient();
    PostMethod method = new PostMethod(url);
    
    method.setParameter(...., ....);
    

    per recuperare l’URI

    System.out.println("getUri: " + method.getURI());
    

    per recuperare i parametri in POST

    method.getRequestEntity().writeRequest(System.out);
    
    • Sistema.non è per essere incoraggiati per la registrazione
    • Mi è piaciuto questo esempio, perché method.getRequestEntity().writeRequest mi ha aiutato a stampare la richiesta.
    • Mentre sono d’accordo, non sono d’accordo inquinanti un esempio minimo irrilevanti codice di registrazione.
    • Questo è impraticabile per nulla al di fuori di una demo. Si può immaginare di fare questo per ogni singola chiamata HTTP fatti?
  3. 0
    org.apache.http.client.fluent.Request#viaProxy 
    

    Questo metodo può rendere la vostra richiesta di passare attraverso il proxy server, in modo che il vostro grado di lanciare un server proxy locale, per esempio Fiddler, quindi questo debugging proxy può mostrare i dettagli del http di richiesta e di risposta.

  4. 0

    Provare ad abilitare DEBUG modalità di registrazione configurazioni, se si utilizza log4j è possibile aggiungere a questo il log4j.xml file di progetto

    <root>
        <priority value="DEBUG" />
        <appender-ref ref="FILE" />
    </root>
    

    Avrete il pieno intestazioni di richiesta, params, corpo, ecc, registrato nel file di log.

Lascia un commento