Apache HttpClient 4.0-бета2 httppost, как добавить реферер? - PullRequest
14 голосов
/ 19 июля 2009

Я пытаюсь добавить реферер в пост http в Apache HttpClient (httpclient-4.0-beta2).

Я нашел пример кода, который делает это. Код работает, но мне интересно, не существует ли более простого и более простого способа добавления реферера, чем использование (угрожающе названного) addRequestInterceptor, который, по-видимому, принимает (yikes!) Внутренний класс в качестве параметра.

Данный код начинается ниже с "// добавляем заголовок реферера". Я новичок, и этот код делает несколько вещей, которые я не понимаю. Неужели это самый простой способ добавить реферера в мой пост http?

Спасибо за любые указатели.

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

1 Ответ

16 голосов
/ 19 июля 2009

Любая причина не делать:

httppost.addHeader("Referer", referer);

? HttpPost подклассы (косвенно) AbstractHttpMessage, поэтому вы можете просто добавить заголовки таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...