2012-02-13 11 views
9

Esiste una semplice implementazione del parser di risposta http? L'idea è di inserire la risposta completa come una grande stringa ed essere in grado di recuperare elementi come statuscode, corpo ecc. Tramite l'interfaccia.Esiste un semplice parser di risposta http per Java?

Le richieste/risposte non vengono inviate direttamente su TCP/IP, quindi non è necessario nulla se non l'implementazione di analisi core rfc 2616.

risposta

11

Se si utilizza per esempio Apache HttpClient otterrete un oggetto risposta Java che può essere utilizzato per estrarre le intestazioni o il corpo del messaggio. Si consideri il seguente esempio

HttpClient client = new DefaultHttpClient(); 
HttpResponse response = client.execute(new HttpGet("http://www.foo.com/")); 
Header[] headers = response.getAllHeaders(); 
InputStream responseBody = response.getEntity().getContent(); 

Se si desidera solo di analizzare un reponse, forse il HttpMessageParser sarà utile:

astratta parser messaggio destinato a costruire messaggi HTTP da una fonte di dati arbitrari.

+1

IMHO l'OP vuole analizzare la risposta HTTP non elaborata che ha in una stringa (forse da qualche discarica). –

+0

Thomasz ha ragione. Sto lavorando con risposte non corrette ... non ci sono URI e HttpGet non funzionerà. – mibollma

+0

@mibollma, vedere il secondo suggerimento usando 'HttpMessageParser' –

0

Si consiglia http-request basato su apache http api.

HttpRequest<String> httpRequest = HttpRequestBuilder.createGet(someUri, String.class) 
    .responseDeserializer(ResponseDeserializer.ignorableDeserializer()) 
    .build(); 

public void send(){ 
    ResponseHandler<String> responseHandler = httpRequest.execute(); 
    String responseBody = responseHandler.get(); 
    int statusCode = responseHandler.getStatusCode(); 
} 

Mi raccomando vivamente di leggere la documentazione prima dell'uso.