This website uses POST to send data whenever the user clicks on a calendar to change the date. I used Firebug to inspect it. The target URL is this. The post data (space-separated) for a particular example is LeagueID=9 GameDate=4-29-2011 Season=2010-2011 Refresh=false LastUpdateTime=01-01-1900 type=Matchups RefreshStartTime=15-5-2011-1308094688683 Week= conferenceID=.
And here are the headers:
Host scores.covers.com User-Agent Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language en-gb,en;q=0.5 Accept-Encoding gzip, deflate Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive 115 Connection keep-alive Referer http://scores.covers.com/basketball-scores-matchups.aspx Content-Length 169 Content-Type text/plain; charset=UTF-8 Cookie __loooooooooongCookieString I'd like to make that POST request using WebRequest (or whetever else does the trick). Here's my attempt:
string parameters = "LeagueID=\"9\"&GameDate=\"4-29-2011\"&Season=\"2010-2011\"&Refresh=\"false\"&LastUpdateTime=\"01-01-1900\"&type=\"Matchups\"&RefreshStartTime=\"15-5-2011-1308094688683\"&Week=&conferenceID="; byte[] bytes = Encoding.ASCII.GetBytes(parameters); HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://scores.covers.com/ajax/SportsDirect.Controls.LiveScoresControls.Scoreboard,SportsDirect.Controls.LiveScoresControls.ashx?_method=UpdateScoreboard&_session=no"); req.Method = "POST"; req.ContentLength = bytes.Length; req.ContentType = "text/plain; charset=UTF-8"; Console.WriteLine(req.ContentLength); // 175 Stream reqStream = req.GetRequestStream(); reqStream.Write(bytes, 0, bytes.Length); reqStream.Close(); WebResponse resp = req.GetResponse(); Console.WriteLine(((HttpWebResponse)resp).StatusDescription); // OK Stream respStream = resp.GetResponseStream(); StreamReader reader = new StreamReader(respStream); Console.WriteLine(reader.ReadToEnd()); resp.Close(); But it doesn't work. The response code is OK, but the response itself is this:
new Object();r.error = new ajax_error('System.FormatException','Input string was not in a correct format.\r\nCould not retreive parameters from HTTP request.',0 )new Object();r.error = new ajax_error('System.ArgumentException','Object of typ e \'System.DBNull\' cannot be converted to type \'System.Int32\'.',0) What's the deal? I can see that something's wrong with the params since the content length of the request is 175 (as opposed to the 169 from the request made by Firefox).