我想創建一個小的java應用程序,將一些wiki內容從一臺服務器複製到另一臺服務器。 API是based on the XML-RPC。httpclient - 使用帶POST消息的cookie
基本上我有三種方法,login
,getPage
和putPage
。我使用Apache HttpClient 3.x併成功地使用login
登錄成功,並使用getPage
正確獲取舊wiki的頁面。
使用cookie處理認證:我登錄到新的wiki並在相應的httpclient上設置了一些cookie。 doku告訴我,其中一個cookie用於驗證。
然後我在同一個httpclient上用另一個POST方法執行putPage
,並且服務器響應一個認證失敗消息。
的代碼序列是這樣的(非常小):
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
它應該工作一樣,或者我需要手動添加餅乾到第二post方法,如果是,如何?
編輯/解決方案
隨着這個問題的答案,我能夠發現和解決問題,這是的HttpClient的使用之外的幫助。最後,這是目標wiki端的配置問題。這裏的答案幫助我在另一個論壇上提出正確的問題。
對不起,剛剛意識到,有太多'httpclients'了。我使用Apache HttpClient,引用的頁面讓我感到緊張,但它描述了一個HTTPClient,這是一個不同的東西。編輯我的問題,使其更清晰一點。 – 2010-09-03 15:16:43
我編輯了我的答案,以匹配Apache HTTP客戶端,但行爲是完全相同的:-) – 2010-09-03 15:20:46