1

ICSからHttpCliコンポーネントを使用してリクエストをPOSTしています。コンポーネントに付属している例を使用します。それは言う:

procedure TForm4.Button2Click(Sender: TObject);
var
    Data : String;
begin
    Data:='status=no';
    HttpCli1.SendStream := TMemoryStream.Create;
    HttpCli1.SendStream.Write(Data[1], Length(Data));
    HttpCli1.SendStream.Seek(0, 0);
    HttpCli1.RcvdStream := TMemoryStream.Create;
    HttpCli1.URL := Trim('http://server/something');
    HttpCli1.PostAsync;
end;

しかし、実際には、それは送信しません

status = no

しかし

statu

どこに問題があるのか​​わかりません。誰かが例を示すことができるかもしれません、HttpCliコンポーネントの助けを借りてPOSTリクエストを送信する方法は?

PS私はインディを使用できません=)

4

1 に答える 1

6

stringタイプが文字あたり2バイトのUnicodeデータを保持するDelphi2009以降を使用していると思います。このLength関数は、バイト数ではなく文字数を提供するため、文字列をメモリストリームに入れると、文字列から半分のバイトしかコピーされません。ただし、それらすべてをコピーしたとしても、各文字には2バイトがあり、サーバーはおそらく1バイトしか取得しないと想定しているため、ストリームにはまだ大量の追加データがあります。

AnsiStringまたはなどの別の文字列タイプを使用しますUTF8String

于 2010-03-08T18:35:24.767 に答える