2009-07-19 10 views
14

Sto tentando di aggiungere un riferimento a un post http in Apache HttpClient (httpclient-4.0-beta2).Apache HttpClient 4.0-beta2 httppost, come aggiungere un referente?

Ho trovato un codice di esempio che esegue questa operazione. Il codice funziona, ma mi chiedo se non ci sia un modo più semplice, più diretto per aggiungere il referer che usare il (ominously named) addRequestInterceptor, che sembra prendere una classe interna (yikes!) Come parametro.

Il codice in questione inizia di seguito con "// aggiungi l'intestazione di riferimento". Sono un novizio e questo codice sta facendo molte cose che non capisco. Questo è davvero il modo più semplice per aggiungere un referer al mio post http?

Grazie per eventuali suggerimenti.

// initialize request parameters 
List<NameValuePair> formparams = new ArrayList<NameValuePair>(); 
formparams.add(new BasicNameValuePair("firstName", "John")); 
formparams.add(new BasicNameValuePair("lastName", "Doe")); 

// set up httppost 
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams, "UTF-8"); 
HttpPost httppost = new HttpPost(submitUrl); 
httppost.setEntity(entity); 

// create httpclient 
DefaultHttpClient httpclient = new DefaultHttpClient(); 

// add the referer header, is an inner class used here? 
httpclient.addRequestInterceptor(new HttpRequestInterceptor() 
{ 
    public void process(final HttpRequest request, 
         final HttpContext context) throws HttpException, IOException 
    { 
     request.addHeader("Referer", referer); 
    } 
}); 

// execute the request 
HttpResponse response = httpclient.execute(httppost); 

risposta

16

Qual è il motivo di non farlo:

httppost.addHeader("Referer", referer); 

? HttpPost sottoclassi (indirettamente) AbstractHttpMessage quindi dovresti essere in grado di aggiungere solo le intestazioni in questo modo.

+0

Grazie mille per questo aiuto. Sono abbastanza sicuro di aver provato prima qualcosa del genere e, in caso di fallimento, ho iniziato a cercare un altro modo. Eppure, quando ci provo ora funziona la prima volta! :) Probabilmente ho commesso un piccolo errore che mi ha portato fuori strada (non ammetterò per quanti giorni ci ho lavorato ...). –

Problemi correlati