Я хочу создать небольшое приложение java для копирования содержимого вики с одного сервера на другой. API - based on the XML-RPC.httpclient - использовать файлы cookie с сообщением POST
В основном у меня есть три метода: login
, getPage
и putPage
. Я использую Apache HttpClient 3.x и сумел использовать login
для успешного входа в систему и getPage
, чтобы получить страницу из старой wiki правильно.
Аутентификация обрабатывается с помощью куки-файлов: я вхожу в новую вики и некоторые файлы cookie устанавливаются на соответствующий httpclient. Доку говорит мне, что одно из этих файлов cookie используется для аутентификации.
Затем я выполняю putPage
с другим методом POST на том же httpclient, и сервер отвечает сообщением об ошибке аутентификации.
код последовательность выглядит следующим образом (очень сниженный):
HttpClient client = new HttpClient();
PostMethod postLogin = createNewPostMethod("login", "user", "pw");
client.executeMethod(postLogin);
// Now I'm logged in and the client definitly has stored the cookies
PostMethod postPutPage = createNewPostMethod("putPage", getPage());
client.executeMethod(postPutPage); // the server won't let me put the page
Должен ли он работать так, или я должен добавить печенье вручную второму методу пост и, если да, то каким образом?
Редактировать/Решение
С помощью ответов на этот вопрос, я был в состоянии идентифицировать и решить проблему, которая была за пределами использования HttpClient. В конце концов, это была проблема конфигурации на целевой стороне вики. Ответы здесь помогли мне задать правильные вопросы на другом форуме.
К сожалению, только что понял, есть слишком много «httpclients» вокруг. Я использую Apache HttpClient, ссылочная страница заставляла меня нервничать, но она описывает HTTPClient, что-то другое. Отредактировал мой вопрос, чтобы сделать его немного яснее. –
Я отредактировал свой ответ, чтобы соответствовать HTTP-клиенту Apache, но поведение совершенно не изменилось :-) –