Jag håller på att integrera en gadget som tyvärr saknar API. Jag är förpassad till förkastlig ”screen scraping” .
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?
Begränsning i HTTP GET?
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.
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.
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 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
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)
Tack för att du tog dig tid att fundera @jang.
/Alex
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.
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é.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.