このページを読み込んで呼び出される 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 は空の文字列です。過去にWebコンテンツを取得したとき(従来のget/post、以前はjsonなし)、リファラーが必要になることがあったので、追加してみました
request.Referer = "http://www.nzracing.co.nz/RaceInfo.aspx"
それでも違いはありません。その後、ある種のセッション ID を持つ 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 応答が得られないのはなぜですか?
乾杯