Synapse POST lazarus / 38-Networking and Web Programming ---------------------------------------------------------------------- Middlecope · 2012-10-24 14:54 I like to get lottery numbers from a website: http://wnk.cc/default.aspx using the following code: Code: [Select] HTTP.ProxyHost := '';     HTTP.ProxyPort := '';     HTTP.MimeType := 'application/x-www-form-urlencoded';     HTTP.HTTPMethod('GET','http://wnk.cc/default.aspx');     lijst.LoadFromStream(HTTP.Document);    Get_lottery_numbers;  It is OK Down on the page you can chose the second page and firefox shows me the following link: 'javascript:__doPostBack('ctl00$bodyCenterContentPlaceHolder$periodDat eGridView','Page$2') To get page number 2 I wrote the follwing code: Code: [Select]   URLData:= 'txtrn=javascript:_doPostBack(''ctl00$bodyC enterContentPlaceHolder$periodDateGridView'',''Page$2'')';    HTTP.Document.Write(Pointer(URLData)^, Length(URLData));        HTTP.HTTPMethod('POST','http://wnk.cc/default.aspx');       lijst.LoadFromStream(HTTP.Document);    Get_lottery_numbers;       Unfortunately I get still the first page. Omitting the "txtrn="  same result. Suggestions are highly appreciated. Thanks ---------------------------------------------------------------------- User137 · 2012-10-24 15:07 Try: Code: [Select]HTTP.Document.Write(URLData[1], Length(URLData)); I mean, string type character data doesn't start from the original pointer. @varString is different than @varString[1] (which is first character). ---------------------------------------------------------------------- Middlecope · 2012-10-24 18:44 Unfortunately, that doesn't do the job. More suggestions? ---------------------------------------------------------------------- User137 · 2012-10-24 20:16 javascript:__doPostBack you wrote javascript:_doPostBack That's all i can see for now ---------------------------------------------------------------------- Middlecope · 2012-10-24 21:57 Thanks I have corrected the 1 underscore to 2  Same result. Maybe I have to prefix the URLData with something else then:  txtnr= Any hint is welcome ---------------------------------------------------------------------- BeniBela · 2012-10-24 22:41 Well of course that does not work, because it is a javascript function call and not a post data. The post data is all the value of all the fields on the webpage, i.e.: Quote__VIEWSTATE=%2FwEPDwULLTEwNTUxNzY2MjIPZBYCZg9kFgICAw9kFgICBQ9kFgo CAQ9kFgwCAQ8WAh4LXyFJdGVtQ291bnQCBRYKZg9kFgJmDxUBA1dOS2QCAQ9kFgJmDxUBB VNtYXJ0ZAICD2QWAmYPFQEFRGFpbHlkAgMPZBYCZg8VAQpTYW50byBEb20uZAIED2QWAmY PFQEGRGlhcmlvZAICDxYCHwACBRYKZg9kFgJmDxUBBDg0NDdkAgEPZBYCZg8VAQQ5MzQ1Z AICD2QWAmYPFQEEMjEzMGQCAw9kFgJmDxUBBDU1NDhkAgQPZBYCZg8VAQQ0MzU2ZAIDDxY CHwACBRYKZg9kFgJmDxUBBDQzNzVkAgEPZBYCZg8VAQQyODE3ZAICD2QWAmYPFQEEMDU2M WQCAw9kFgJmDxUBBDIyOThkAgQPZBYCZg8VAQQwNDAxZAIEDxYCHwACBRYKZg9kFgJmDxU BBDMzNTRkAgEPZBYCZg8VAQQ1NDU0ZAICD2QWAmYPFQEEMzE5OWQCAw9kFgJmDxUBBDI5N jdkAgQPZBYCZg8VAQQyODE3ZAIFDw9kPCsABgEAEBYBZhYBFgIeDlBhcmFtZXRlclZhbHV lZBYBAgNkAgYPD2Q8KwAGAGQCAw8QDxYCHgtfIURhdGFCb3VuZGdkEBUmDDIwMTIgb2t0b 2Jlcg4yMDEyIHNlcHRlbWJlcg0yMDEyIGF1Z3VzdHVzCTIwMTIganVsaQkyMDEyIGp1bmk IMjAxMiBtZWkKMjAxMiBhcHJpbAoyMDEyIG1hYXJ0DTIwMTIgZmVicnVhcmkMMjAxMiBqY W51YXJpDTIwMTEgZGVjZW1iZXINMjAxMSBub3ZlbWJlcgwyMDExIG9rdG9iZXIOMjAxMSB zZXB0ZW1iZXINMjAxMSBhdWd1c3R1cwkyMDExIGp1bGkJMjAxMSBqdW5pCDIwMTEgbWVpC jIwMTEgYXByaWwKMjAxMSBtYWFydA0yMDExIGZlYnJ1YXJpDDIwMTEgamFudWFyaQ0yMDE wIGRlY2VtYmVyDTIwMTAgbm92ZW1iZXIMMjAxMCBva3RvYmVyDjIwMTAgc2VwdGVtYmVyD TIwMTAgYXVndXN0dXMJMjAxMCBqdWxpCTIwMTAganVuaQgyMDEwIG1laQoyMDEwIGFwcml sCjIwMTAgbWFhcnQNMjAxMCBmZWJydWFyaQwyMDEwIGphbnVhcmkNMjAwOSBkZWNlbWJlc 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 zwrAAwBCAIEZABjxoCEc9b3c1xaae5lpYON8I0%2BC8wlw9cf9%2FFvK%2Bta&__EVENTV ALIDATION=%2FwEWMgLk6%2FjiCgKt%2B%2F%2FfCAKPpvTbCgKOpujbCgKOppTbCgKOpu DbCgKOpuzbCgKOpvjbCgKOpuTbCgKOpvDbCgKOpvzbCgKOpsjbCgKPpsD%2BBQKPptz%2B BQKPptj%2BBQKOpvz%2BBQKOpvj%2BBQKOpvT%2BBQKOpvD%2BBQKOpsz%2BBQKOpsj%2B BQKOpsT%2BBQKOpsD%2BBQKOptz%2BBQKPptSRDAKPpqCSDAKPpqySDAKOpsCRDAKOpsyR DAKOptiRDAKOpsSRDAKOptCRDAKOptyRDAKOpqiSDAKOptSRDAKOpqCSDALqycW6AQLqyd G6AQLqyd26AQLpydG6AQLU66jtAwLutvPICQKgo97QAgKYr6u2BwL1nJezBwKFoN%2BzBg KY2NnLDwKz57%2BUCQKz58OUCQKz59eUCUo971DhwuqCYdja8WbdrOVBJTWWUB5Cfh4b8Z P4DPEA&ctl00%24bodyCenterContentPlaceHolder%24todayDateLotteryDraw%24d ateHiddenField=23%2F10%2F2012%2018%3A29%3A51&ctl00%24bodyCenterContent PlaceHolder%24periodDateGridView%24ctl02%24dateLotteryDraw%24dateHidde nField=22%2F10%2F2012%200%3A00%3A00&ctl00%24bodyCenterContentPlaceHold er%24periodDateGridView%24ctl03%24dateLotteryDraw%24dateHiddenField=21 %2F10%2F2012%200%3A00%3A00&ctl00%24bodyCenterContentPlaceHolder%24peri odDateGridView%24ctl04%24dateLotteryDraw%24dateHiddenField=20%2F10%2F2 012%200%3A00%3A00&ctl00%24bodyCenterContentPlaceHolder%24periodDateGri dView%24ctl05%24dateLotteryDraw%24dateHiddenField=19%2F10%2F2012%200%3 A00%3A00&ctl00%24bodyCenterContentPlaceHolder%24periodDateGridView%24c tl06%24dateLotteryDraw%24dateHiddenField=18%2F10%2F2012%200%3A00%3A00& ctl00%24bodyCenterContentPlaceHolder%24periodDateGridView%24ctl07%24da teLotteryDraw%24dateHiddenField=17%2F10%2F2012%200%3A00%3A00&ctl00%24b odyCenterContentPlaceHolder%24periodDateGridView%24ctl08%24dateLottery Draw%24dateHiddenField=16%2F10%2F2012%200%3A00%3A00&__EVENTTARGET=ctl0 0%24bodyCenterContentPlaceHolder%24periodDateGridView&__EVENTARGUMENT= Page%242 for the second page and changes probably on every visit... By the way, with my internet tools, you can get that postdata with a single line: Code: [Select]process(page, 'form(//*:form, ''__EVENTTARGET=ctl00$body CenterContentPlaceHolder$periodDateGridView&__EVENTARGUMENT=Page$'+int tostr(p)+''').post').toString; And the entire program, printing all lottery numbers, one table row / line, becomes Code: [Select]program adv; {$mode objfpc}{$H+} uses Interfaces, simpleinternet, sysutils; var   page: String;   p: Integer;   x: IXQValue;   postdata: String; begin   page := httpRequest('http://wnk.cc/default.aspx');   for p := 2 to 5 do begin     writeln('=========');     for x in process(page, '//*:table[@id="drawTable"]/*:tr/string- join(*:td, " ")') do       writeln(x.tostring);     if p = 5 then exit;     postdata := process(page, 'form(//*:form, ''__EVENTTARGET=ctl00$bo dyCenterContentPlaceHolder$periodDateGridView&__EVENTARGUMENT=Page$'+i nttostr(p)+''').post').toString;     page := httpRequest('http://wnk.cc/default.aspx', postdata);   end; end. (but that is with the unpublished, new interface. The published, old does  not need the *: and .toString, but also does not have the for..in loop, so it would need some ugly class creation) ---------------------------------------------------------------------- Middlecope · 2012-10-25 12:40 Dear BeniBela, From the link I can see that it wants to execute a javascript. If that is not possible with Synapse I will try out the internettools.zip from your website Thanks