2011-09-07 43 views
3

我試圖通過使用VBScript網絡編程的形式提交後的一些數據。我張貼到該網站包含了一些Java,並在報頭已經探出的時候,我注意到它發送包含JSESSIONID,我相信這是與Java認證做一個cookie:Retrieiving餅乾和發送Cookies和POST變量在VBScript

的Cookie:JSESSIONID = XXXXXXXXXXXXXXXXXXXXX

當我剛剛送我想送看看它送我回了Java認證頁面的responseText的,這讓我覺得我需要檢索JSESSIONID cookie,並提交回來的數據地址和發佈數據以及。

這是我使用提交後數據的功能。對於簡單的形式,這似乎很好地工作,但此頁面上的Java有那種扔我:

Function Fetch(URL, POST) 

    Set WshShell = CreateObject("WScript.Shell") 
    Set http = CreateObject("Microsoft.XmlHttp") 
    http.open "POST", URL, FALSE 
    http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
    http.send POST 
    Fetch = http.responseText 
set WshShell = nothing 
set http = nothing 

End Function 

我的問題真的是:我如何做這個嗎?我是否需要加載第一頁,獲取cookie並重新提交表單?如果是這樣,我如何檢索服務器在標題中發回的cookie?當我查看他們發回的標題時,我可以看到:

Set-Cookie:JSESSIONID = XXXXXXXXXXXXXXXXXXXXX;路徑= /頁

非常感謝。

回答

4

您可以通過http.getResponseHeader("Set-Cookie")或解析http.getAllResponseHeaders()獲得。然後,您應該在下次請求時通過http.setRequestHeaders "Cookie", "JSESSIONID=XXXXXXXXXXXXXXXXXXXXX; Path=/Page"將cookie值添加到請求標頭。
所以,還有另一種選擇(如果我沒有錯),使用CreateObject("WinHttp.WinHttpRequest.5.1")

只要您使用相同的實例,就可以記住之前在下一個請求中使用的Cookie。

+0

啊,是「http.getResponseHeader(」Set-Cookie「)」這就是我所需要的。非常感謝! – Simon