簡體   English   中英

從Java(Apache HttpClient)管理與ASP.NET站點的會話

[英]Managing a session with ASP.NET site from Java (Apache HttpClient)

我想從ASP.NET站點中獲取一個網頁,該站點只能從會話中訪問。 我正在使用Apache HttpClient。 我首先打開網站的主頁,然后搜索到“目標”頁面的鏈接,然后為“目標”頁面啟動GET請求。 問題是,當我收到第二個GET請求的響應時,總是得到相同的(第一)頁面。 如果我使用Firefox或Google Chrome打開網站,則會看到“目標”頁面。

從服務器的第一個響應中,我得到以下標頭:

HTTP/1.1 200 OK
Date: Sun, 12 Dec 2010 19:03:56 GMT
Server: Microsoft-IIS/6.0
Platform: Mobitel Pla.NET
Node: 4
X-Powered-By: ASP.NET
X-AspNet-Version: 1.1.4322
Set-Cookie: ASP.NET_SessionId=0vpgd055cifko3mnw4nkuimz; path=/
Cache-Control: no-cache, must-revalidate
Content-Type: text/html; charset=utf-8
Content-Length: 7032

我用WireShark檢查了流量,所有標題看起來都不錯。 我在第二個GET請求上將正確的cookie發送回服務器。

我正在使用Apache HttpClient。 我只有一個DefaultHttpClient實例,並將其重用於第二個請求。 我有BROWSER_COMPATIBILITY Cookie政策。

有任何想法嗎?

您需要在所有其他請求中從客戶端發回此標頭(發回收到的cookie):

Cookie: ASP.NET_SessionId=0vpgd055cifko3mnw4nkuimz; // and all other cookies

這應該夠了吧

我發現了我的愚蠢錯誤。

錯誤是我將第二個GET請求發送到鏈接,而沒有替換“&”字符代碼。

例如:

/(0vpgd055cifko3mnw4nkuimz)/Mp.aspx?ni=1482&pi=72&_72_url=925b9749-b7c7-4615-9f1a-9b613c344c82

這是錯誤的,因為我發送& 代替&

正確的方法是:

/(0vpgd055cifko3mnw4nkuimz)/Mp.aspx?ni=1482&pi=72&_72_url=925b9749-b7c7-4615-9f1a-9b613c344c82

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM