2009-07-19 8 views
14

Ich versuche, einen HTTP-Beitrag in Apache HttpClient (httpclient-4.0-beta2) einen Verweis hinzufügen.Apache HttpClient 4.0-beta2 httppost, wie man einen Referer hinzufügt?

Ich fand einige Beispielcode, der dies tut. Der Code funktioniert, aber ich frage mich, ob es einen einfacheren, direkteren Weg gibt, den Referer hinzuzufügen, als den (sinnigerweise benannten) addRequestInterceptor zu verwenden, der eine (yikes!) Innere Klasse als Parameter zu nehmen scheint.

Der betreffende Code beginnt unten mit "// addiere den Referer Header". Ich bin ein Neuling und dieser Code macht mehrere Dinge, die ich nicht verstehe. Ist das wirklich der einfachste Weg, einen Referer zu meinem http-Post hinzuzufügen?

Danke für alle Hinweise.

// 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); 

Antwort

16

Gibt es Gründe, nicht zu tun:

httppost.addHeader("Referer", referer); 

? HttpPost Unterklassen (indirekt) AbstractHttpMessage so sollten Sie in der Lage sein, nur Header auf diese Weise hinzuzufügen.

+0

Vielen Dank für diese Hilfe. Ich bin mir ziemlich sicher, dass ich zuerst so etwas probiert habe und bei der Suche nach einem anderen Weg begann. Aber wenn ich es jetzt versuche, funktioniert es zum ersten Mal! :) Wahrscheinlich ein kleiner Fehler, den ich gemacht habe, der mich in die Irre geführt hat (ich werde nicht zugeben, wie viele Tage ich daran gearbeitet habe ...). –

Verwandte Themen