Einzelnen Beitrag anzeigen

Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#1

IdHTTP-Post - wie richtige Zeilenumbrüche machen?

  Alt 19. Nov 2010, 11:25
Hi,

ich versuche mit IdHTTP einen POST an einen Server abzusetzen.

Code:
procedure TForm1.Button2Click(Sender: TObject);
var
   dummy : TStringList;
   Stream_ : TIdMultipartFormDataStream;
   BufferStr : String;
begin
dummy := TStringList.Create;
With dummy do begin
     Text :=
     '----------111910102236687'#10+                         // die "---<timecode>"s müssen vermutlich nicht sein, gel?
     'Content-Disposition: form-data; name="Postvariable1"'#10+
     'Inhalt A'#10+
     '----------111910102236687'#10+
     'Content-Disposition: form-data; name="Postvariable2"'#10+
     'Inhalt 2'#10+
     '----------111910102236687';
              end;

With IdHTTP1 do begin
     Host := Edit1.Text;
     Port := 8134; // das muss so sein
     HTTPResponse := Post('/' + Edit2.Text, dummy);
                end;

TntMemo1.Text := HTTPResponse;

dummy.Free;
Stream_.Free;
end;
Ich habe mir SmartSniff runtergeladen und schaue mir an, was der Client hier abschickt:

Code:
POST /montvideo/post_test.php HTTP/1.0
Connection: close
Content-Type: text/xml;charset=UTF-8
Content-Length: 201
Host: 178.63.56.2:8134
Accept: text/html, */*
Accept-Encoding: gzip,deflate
User-Agent: Mozilla/3.0 (compatible; Indy Library)

----------111910102236687&Content-Disposition: form-data; name="Postvariable1"&Inhalt A&----------111910102236687&Content-Disposition: form-data; name="Postvariable2"&Inhalt 2&----------111910102236687
Leider keine Zeilenumbrüche da.
Wenn ich in meinen POST-Text oben #13#10 einfüge, verdoppeln sich die Ampersand-Zeichen und es kommen Zeilenumbrüche hinzu, ich brauche aber in dem was wirklich abgeschickt wird einfach nur Zeilenumbrüche und keine Ampersand-Zeichen (ich habe schon den Output von TIdMultipartFormDataStream gesnifft, da waren einfach nur Zeilenumbrüche und keine Ampersand-Zeichen zu sehen).

Zwei Fragen:
1) Sehe ich das korrekt, dass in dem realen(!) Output des http-Klienten (also das was raus geht) keine &'s drin sind?
2) Wie kriege ich das hin, dass bei mir auch keine drin sind?

Ich will weiter die POST-Methode mit der Signatur (URL: String, Inhalt: TStrings) verwenden, also nicht mit einem Stream arbeiten, denn es muss auch möglich sein, Formulardaten per Hand zu definieren (- ähm - oder? ).

Es dankt und grüßt
Caps
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat