c# - Need guidance on creating a post request and getting back a value -
i trying make web service need crawl data from. problem site need data from, in asp gridview has paging in it.. need is, read html, postback page - give me next page of gridview, , new html code (the response) whom can parse , data need...
i tried in many ways solve problem, did not succeed. tell me where/what doing wrong?
code:
[webmethod] public string enabavki2() { webclient client = new webclient(); client.encoding = encoding.utf8; string htmlcode = client.downloadstring("https://site.com/default.aspx"); string vsk = getbetween(htmlcode, "id=\"__viewstatekey\" value=\"", "\" />"); webrequest request = webrequest.create("https://site.com/default.aspx"); request.contenttype = "application/x-www-form-urlencoded"; request.method = "post"; var webrequest = (httpwebrequest)request; webrequest.useragent = "mozilla/5.0 (windows nt 6.2; wow64; rv:20.0) gecko/20100101 firefox/20.0"; //googlebot/2.1 (+http://www.googlebot.com/bot.html) //set form data string postdata = string.format("__eventtarget={0}" + "&__eventargument={1}" + "&__lastfocus={2}"+ "&__viewstatekey={3}"+ "&__viewstate={4}"+ "&__scrollpositionx={5}"+ "&__scrollpositiony={6}"+ "&ctl00$ctl00$cphglobal$cphpublicaccess$publiccftenders$dgpubliccallfortender$ctl13$ddlpageselector={7}", system.web.httputility.urlencode("ctl00$ctl00$cphglobal$cphpublicaccess$publiccftenders$dgpubliccallfortender$ctl13$ddlpageselector"), /*1*/string.empty, /*2*/string.empty, /*3*/string.empty,//vsk /*4*/string.empty, /*5*/"0", /*6*/"383", /*7*/"2"); byte[] bytearray = encoding.utf8.getbytes(postdata); //send form data request stream request.contentlength = bytearray.length; stream datastream = request.getrequeststream(); datastream.write(bytearray, 0, bytearray.length); datastream.close(); var response = request.getresponse(); // stream containing content returned server. datastream = response.getresponsestream(); streamreader reader = new streamreader(datastream); string responsefromserver = reader.readtoend(); // clean streams. reader.close(); datastream.close(); response.close(); return responsefromserver; }
ok, few things, in postdata string included every thing find on page send. used fidler this, , (26) arguments gave me. 1 need pageselector (to change value)
also notice there __viewstatekey in html code, gets different value everytime. can see tried first value html (the vsk string), did not change anything..
i sorry, not familiar post/request thing. need project university, please if me solve this....
edit: here prt scr on fidler giving me headers:
are there cookies expected web site posting to? check fiddler see if cookies attached post when use site manually.
if so, need cookies received when issue request , attach them second post request. see using cookiecontainer webclient class info on how webclient.
Comments
Post a Comment