Einzelnen Beitrag anzeigen

Benutzerbild von Ajintaro
Ajintaro

Registriert seit: 20. Okt 2004
Ort: Sankt Augustin
138 Beiträge
 
Delphi XE6 Starter
 
#1

idHTTP post bad request wegen Sonderzeichen

  Alt 15. Okt 2014, 22:55
Hallo DP,

es ist spät und ich sehe schon weiße Mäuse.. aber mich wurmt folgendes: ich sende mit folgender Prozedur POST Daten ab:

Delphi-Quellcode:
{++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//submit_post
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}

Procedure submit_post(url_string,EncodedStr:string;amemo:TMemo);
var
  aStream: TMemoryStream;
  Params: TStringStream;
begin
  aStream := TMemoryStream.create;
  Params := TStringStream.create('');

  try
    with Fmain.IdHTTP1 do
    begin
      Params.WriteString(URLEncode(EncodedStr));
      Request.ContentType := 'application/x-www-form-urlencoded';
      try
        Response.KeepAlive := False;
        Post(url_string, params, aStream);
      except
        on E: Exception do showmessage('Error encountered during POST: ' + E.Message);
      end;
    end;
    aStream.WriteBuffer(#0' ', 1);
    aStream.Position := 0;
    amemo.Lines.LoadFromStream(aStream);
  except
    aStream.Free;
    Params.Free;
  end;
end;
Das funktioniert auch soweit prima. In meinen Daten befindet sich aber manchmal ein Telefon-Ländercode: +49 den ich genau so übertragen möchte. Leider ignoriert der Server das +49 und macht daraus 49. Wenn ich es mit %2B49 versuche, gibts als Antwort einen HTTP 1.1 Bad Request 400.

Liegt das an Params.WriteString(URLEncode(EncodedStr)); ?
Jaimy
DAoC 2.0 -> Camelot Unchained !
  Mit Zitat antworten Zitat