我正在尝试检索通过加载此页面调用的 json 响应:http ://www.nzracing.co.nz/RaceInfo.aspx
Fiddler2 显示此页面从http://www.nzracing.co.nz/ServerScript/RaceInfo.aspx/GetCalendarEvents获取 json 内容,传递开始和结束日期 - 例如 {'start':'26-May-2013', “结束”:“2013 年 7 月 7 日”}
我正在尝试检索此内容,但我得到的只是一个空字符串。这是我的功能:
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"
还是没有区别。然后我注意到有一个带有某种 sessionid 的 cookie。所以我添加了我在浏览器中加载它时的值:
request.CookieContainer = New CookieContainer()
request.CookieContainer.Add(New Uri("http://www.nzracing.co.nz"), New Cookie("ASP.NET_SessionId", "1udhwsgqwqzv4innpp4noxao"))
仍然没有,所以我以编程方式检索原始页面,获取 CookieCollection 并将整个 CookieCollection 传递给此处的请求。依然没有。
我显然在这里遗漏了一些相当基本的东西,但我无法找出问题所在。
进一步看,(由于我是新用户而无法引用的页面)表明我的 url 和 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']}"
万岁!我得到回应。但这只是我第一次提到的原始页面的html。不是我在 Fiddler2 中看到的 json 响应。那时候还是不行。
帮助?为什么我没有得到我期望的 json 响应?
干杯