HTTP POST

Tags:    java

Jeg sidder og roder med at lave en HTTP POST request, men synes at jeg får 403 eller 400 fejl eller connection reset.

Sammenhængen er at jeg skal lave et lille program som kan logge på en webserver med username og password, for derefter at requeste bestemte sider. Formentlig involverer det noget med session cookies, men jeg er lidt på bar bund.

Nogen der har et fungerende eksempel. Som udgangspunkt ville jeg være glad bare jeg kan lave en automatisk søgning på google.





4 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Jeg sidder og roder med at lave en HTTP POST request, men synes at jeg får 403 eller 400 fejl eller connection reset.

Sammenhængen er at jeg skal lave et lille program som kan logge på en webserver med username og password, for derefter at requeste bestemte sider. Formentlig involverer det noget med session cookies, men jeg er lidt på bar bund.

Nogen der har et fungerende eksempel. Som udgangspunkt ville jeg være glad bare jeg kan lave en automatisk søgning på google.


Hej,

Her er en generel forklaring som burde hjælpe dig til at forstå hvad du skal implementere:
http://www.udvikleren.dk/thread.php?techid=6&f=6&t=595&searchword=http%20post


/Michael.



Mange tak, du, men jeg er rent faktisk selv nået så langt.

Jeg kan være lidt mere specifik og sige at jeg når til der hvor jeg skal modtaget svaret. Det er lykkedes mig at lave en simpel POST til en side jeg selv har smækket op, men ikke til eksempelvis google - heller ikke sider med noget login-halløj, hvilket er det det skal bruges til.

Generelt TROR jeg det har noget med sessions at gøre, men jeg er lidt blank på hvordan man gør det. Indtil videre har jeg bare opsamlet cookies fra server ("Set-Cookie") og sendt den tilbage med med min næste request ("Cookie").

Fold kodeboks ind/udKode 




Når jeg nu er så kritisk overfor det foreløbig givne svar, så vil jeg da lige løfte lidt af sløret for hvad jeg selv er kommet frem til i løbet af weekenden.

Det lader til at google's webserver - og dermed sikkert også mange andre - afviser (HTTP 403 - Forbidden) requests som ikke opgiver User-Agent headeren.

For mig virkede min GET request, blot jeg tilføjede en header "User-Agent":
Fold kodeboks ind/udKode 


Værdien lader til - i dette tilfælde - at være ligegyldig.

Nu har jeg kun én lille ting tilbage. Sessions. Jeg kan simpelthen ikke få webserveren (eller...) til at acceptere min session. Hvad gør jeg galt?

Jeg sørger for at opsamle cookien for hvert response ved headeren "Set-Cookie" og sender den retur med "Cookie". Jeg klipper al data fra og med det første ";" fra.

Any ideas?



... Og så viste det sig at den såkaldte fejl lå i en skide parameter.

HttpURLConnection står som default til at følge redirects, men den opsamlet ikke selv automatisk cookies fra webserveren. Derfor går de tabt ved en redirect (som er ret almindeligt ved login og lignende POST-requests).

HttpURLConnection.setFollowRedirects(false) løste problemet, dog med den konsekvens af redirects (3xx) skal implementeres manuelt.

Mange tak for hjælpen ellers :)



t