sindreij Skrevet 25. oktober 2007 Del Skrevet 25. oktober 2007 (endret) Er det noen som er gode med Indy her? Jeg skal hente ned en xml-fil som ligger på en server. Problemet er at for å få tak i denne filen må jeg logge meg inn. Derfor bruker jeg idHttp fra Indy 10 for å koble på serveren og prøve å godkjenne meg via post. Problemet er at serveren svarer helt anderledes enn hva den skal. Den sender meg en 302 kode, men den redirecter meg til feil side. Den redirecter meg til http://side.no/front?errormsg=1005,1006, når den skal redirecte meg til http://side.no/web/front?errormsg=1005,1006. I tillegg sender den errormessagen 1005,1006 som betyr "Brukerid må fylles ut Brukerkode må fylles ut", selv om jeg har sendt brukernavn og brukerkode. Jeg har prøvd med mitt eget php-script og sjekket at variablene blir sendt. Her er koden min: var data: TIdMultiPartFormDataStream; response: TIdStringStream; begin data := TIdMultiPartFormDataStream.Create; response := TIdStringStream.Create(''); data.AddFormField('brukernavn','xxxxx'); data.AddFormField('brukerkode','xxxxx'); data.AddFormField('referrer','/web/front'); data.AddFormField('cookieEnabled',''); data.AddFormField('clientTimestamp',''); data.AddFormField('btnSubmit','Logg+inn'); http.Request.UserAgent := 'Mozilla/5.0 (Windows; U; Windows NT 5.1; nb-NO; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5'; http.Request.ContentType := 'application/x-form-urlencoded'; http.post('http://side.no/web/login',data, response); freeandnil(data); memo1.Text := response.DataString; freeandnil(response); end; Her er form-koden til siden jeg skal sende til: form name="login" method="post" action="http://side.no/web/login" onsubmit="java script:btnSubmit.disabled=true;"> <table cellspacing="0" cellpadding="0" border="0" width="100%"> <tr> <td width="5" /> <td><input type="text" name="brukernavn" value="Brukernavn" onfocus="java script:blankField(this);" size="10" maxlength="5" /></td> <td><input type="password" name="brukerkode" value="xxxxx" onfocus="java script:blankField(this);" size="10" maxlength="5" /></td> <td><input type="hidden" name="referrer" value="/web/front" /> <input type="hidden" name="cookieEnabled" value="" /> <input type="hidden" name="clientTimestamp" value="" /> <input type="submit" name="btnSubmit" value="Logg inn" /></td> </tr> </table> </form> EDIT: og med firefox og opera fungerer det. EDIT2: Nå har jeg sjekket litt med Tamper Data til firefox for å endre på dataene firefox sender, og jeg har funnet ut at feilen med at jeg blir sendt til feil side, kommer fordi serveren ikke får referrer-feltet fra leseren, så begge feilene er fordi serveren ikke klarer å få dataene jeg poster. Så da blir spørsmålet hvorfor den ikke klarer å lese dataene jeg poster. Noen som har noen lure ideer? EDIT3: Jeg fant ut etter litt plundring at serveren godtok GET i tillegg til POST og da snakket plutselig idHTTP og serveren samme språk, så det var bare å formulere det om til GET så funket det. Slik ble koden: http.Get('http://side.no/web/login?brukernavn=xxxxx&brukerkode=xxxxx&referrer=/web/front'); Endret 25. oktober 2007 av sindreij Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå