Gå til innhold

Problemer med idHttp [løst]


Anbefalte innlegg

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 av sindreij
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...