IdHTTP HTTPS Post
Hallo!
Ich habe bereits nach IdHTTP HTTPS Post gesucht. Ich bin auch hier und da fündig geworden. Allerdings konnte ich mit keinem der Einträge wirklich erfolgreich sein. Ich habe folgende situation: Delphi 7ich möchte einen HTTPS-Post verschicken. Ich habe auch schon folgende dll.'s im Programmverzeichniss:
Ich kann auch den Request absetzten. Allerdings scheint die Post-Data nicht so anzukommen wie ich sie abschicke. Ich habe ein TMemo dazu benutzt. Hier er aufruf:
Delphi-Quellcode:
* response ist ein TRichEdit.
IdSSLIOHandlerSocketOpenSSL.Open;
if (Method.ItemIndex = 1)then response.Lines.Text := IdHTTP.Post(edurl.Text,request.lines) else response.Lines.Text := IdHTTP.Get(edurl.Text); htmlLite.LoadFromString(response.Lines.Text,''); Ich schicke beispielsweise:
Code:
und bekomme aber:
<?xml version="1.0" encoding="iso-8859-1"?>
Code:
<?xml version="1.0"%20encoding="iso-8859-1"?%3E
Ich habe das gefühl es stimmt was mit der verschlüsslung nicht. Aber was? |
AW: IdHTTP HTTPS Post
Die Post Daten sind UrlEncoded. Versuch mal TIdURI.UrlDecode().
|
AW: IdHTTP HTTPS Post
Es könnte an einem Fehlenden Header liegen.
Wenn der POST Request diese Zeile enthält: Content-Type: application/x-www-form-urlencoded Dann müsste der Server auch die URLEncode Daten korrekt dekodieren. Ist jetzt nur geraten. Einfach mal im Indy IdHTTP Source nachschauen (oder einen HTTP Sniffer einsetzen) ... Hope this helps, |
AW: IdHTTP HTTPS Post
ich glaube ich habe das Problem gefunden.
Es liegt daran das ich Strings genommen habe gebe. Aus irgendeinem Grund löst das folgene funktion in der Komponente aus:
Delphi-Quellcode:
..und zerstört damit mein Post.
procedure TIdCustomHTTP.EncodeRequestParams(AStrings: TStrings);
var i: Integer; LPos: integer; LStr: string; begin Assert(AStrings<>nil); for i := 0 to AStrings.Count - 1 do begin //AStrings[i] := AStrings.Names[i] + AStrings.NameValueSeparator + TIdURI.ParamsEncode(AStrings.ValueFromIndex[i]); LStr := AStrings[i]; LPos := IndyPos('=', LStr); if LPos > 0 then begin AStrings[i] := Copy(LStr, 1, LPos-1) + '=' + TIdURI.ParamsEncode(Copy(LStr, LPos+1, MAXINT)); end; end; end; Nimmt mann ein Stream (die Post funktion ist überladen) geht es: request.lines.SaveToStream(poststream); result.lines := IdHTTP.Post(api_url,poststream); Danke trotzdem für deinen Tipp... |
AW: IdHTTP HTTPS Post
Frage geschlossen...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz