Begränsning i HTTP GET?

Post Reply
alexndr
Medlem
Posts: 420
Joined: 14 Jul 2016, 14:38
8

Jag håller på att integrera en gadget som tyvärr saknar API. Jag är förpassad till förkastlig ”screen scraping” :o .

Just nu har jag fastnat på att min net.HTTPClient() GET inte returnerar hela datat utan bara 67041 bytes. Det jag behöver ligger utanför det och sidan går inte att styra för att begränsa storleken.

Jag bygger logiken i en HC2- scen. Jag har sett att VD erbjuder annat HTTP- bibliotek som jag inte testat än.

Förslag?
alexndr
Medlem
Posts: 420
Joined: 14 Jul 2016, 14:38
8

Läste nyss att VD HTTP- biblioteket inte stödjer HTTPS så det är en återvändsgränd inte ens värd att pröva.
jang
Medlem
Posts: 388
Joined: 05 Jan 2014, 00:44
10
Location: Stockholm

Jag tror iofs inte att det är en begränsning i storleken. Http biblioteket läser in till en lua table som inte har ngn 64k begränsning. Men det är ganska mycket data och det kan vara så att den returnerar en multi-part mime data objekt och httpclient har problem.
En variant är att du använder tcpsocket och skriver ditt http GET request och sedan läser in resultatet själv från vad som kommer tillbaka på socketen.. och det finns exempel på nätet för att tolka multi-part mime med lua.
Men det är lite jobb.
alexndr
Medlem
Posts: 420
Joined: 14 Jul 2016, 14:38
8

Inte säker på att jag förstår "den returnerar en multi-part mime data objekt och httpclient har problem". Det är ju en ren "screen scraping" och returneras med content-type "text/html"?

Kan dock vara så att det är jag som gjort bort mig här när jag skulle maska ut datat ur svaret. Det visade sig att jag glömt göra "escape" på bindestreck i mitt pattern för

Code: Select all

data:match(pattern)
Jag är van vid att jobba med regexp vilket inte var en fördel i detta fall. Jag får kolla.

Tack för att du tog dig tid att fundera @jang.

/Alex
jang
Medlem
Posts: 388
Joined: 05 Jan 2014, 00:44
10
Location: Stockholm

Well, du sa att GET inte returnerade all data - inte att efter din match du inte fick all data ;)
Därför föreslog jag möjliga problem med http implementationer (det finns sådana både för klienten i HC3 och om servrar svarar lite udda...) och möjliga vägar runt det.
Du kan titta på http headers i success funktionen då resultatet har ett headers fält. Där ska det finnas ett "Content-length" header med antal bytes skickade.
alexndr
Medlem
Posts: 420
Joined: 14 Jul 2016, 14:38
8

jang wrote: 16 Feb 2021, 08:49 Well, du sa att GET inte returnerade all data - inte att efter din match du inte fick all data ;)
Därför föreslog jag möjliga problem med http implementationer (det finns sådana både för klienten i HC3 och om servrar svarar lite udda...) och möjliga vägar runt det.
Du kan titta på http headers i success funktionen då resultatet har ett headers fält. Där ska det finnas ett "Content-length" header med antal bytes skickade.
Jo, jag inser att jag i min frustration inte var helt tydlig .. :) Förslaget med "Content-length"- header är ingen dum idé.
Post Reply