我想,讀出通過加載該頁面稱爲JSON響應空響應:http://www.nzracing.co.nz/RaceInfo.aspx以JSON調用(vb.net)
Fiddler2顯示該網頁獲得的JSON內容從http://www.nzracing.co.nz/ServerScript/RaceInfo.aspx/GetCalendarEvents,傳遞開始和結束日期 - 例如{'start':'2013年5月26日','end':'07-Jul-2013'}
我試圖檢索這個內容,但是我得到的只是一個空字符串。這是我的功能:
Public Function GetPage() As String
Dim url As String = "http://www.nzracing.co.nz/ServerScript/RaceInfo.aspx/GetCalendarEvents"
Dim json As String = "{'start':'26-May-2013', 'end':'07-Jul-2013'}"
Dim request As HttpWebRequest = WebRequest.Create(url)
request.ContentType = "text/json"
request.Method = "POST"
Dim streamWriter = New StreamWriter(request.GetRequestStream())
streamWriter.Write(json)
Dim httpResponse As HttpWebResponse = request.GetResponse()
Dim streamReader As StreamReader = New StreamReader(httpResponse.GetResponseStream())
Dim responseText = streamReader.ReadToEnd()
Return responseText
End Function
responseText是一個空字符串。在當我檢索到的網頁內容的過去(傳統的GET/POST,以前沒有JSON)有時引用是必需的,所以我嘗試添加
request.Referer = "http://www.nzracing.co.nz/RaceInfo.aspx"
仍然沒有差異。然後我注意到有一種cookie與某種sessionid。所以我說,當我在我的瀏覽器加載它,我有值:
request.CookieContainer = New CookieContainer()
request.CookieContainer.Add(New Uri("http://www.nzracing.co.nz"), New Cookie("ASP.NET_SessionId", "1udhwsgqwqzv4innpp4noxao"))
還是什麼都沒有,所以我編程方式檢索到的原始頁面,得到了CookieCollection並通過了整個CookieCollection這裏的請求。依然沒有。
我很明顯錯過了一些相當重要的東西,但我無法弄清楚什麼是錯的。
進一步看,(我無法引用,因爲我是一個新用戶的頁面)建議我有我的網址& json字符串錯誤。所以我把它們改爲
Dim url As String = "http://www.nzracing.co.nz/ServerScript/RaceInfo.aspx"
Dim json As String = "{'method':GetCalendarEvents', 'params':['start':'26-May-2013', 'end':'07-Jul-2013']}"
Hooray!我得到一個迴應。但這只是我第一次提到的原始頁面的html。不是我在Fiddler2中看到的json響應。仍然不正確。
幫助?爲什麼我沒有得到我期待的json響應?
乾杯
哇,是的 - 這簡單得多。但是相同的結果 - 一個空字符串。 – Scott
只需添加內容類型即可。這個對我有用。 WC.Headers(「Content-Type」)=「application/json」 – Jamby
Legend!非常感謝。 – Scott