我正在使用ICS的HttpCli组件形式发布请求。我使用该组件随附的示例。它说:

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;


但事实上,它没有发送


状态=否





s.t.a.t.u


我不明白,问题出在哪里。也许有人可以展示一个示例,如何借助HttpCli组件发送POST请求?

PS我不能使用印地=)

最佳答案

我想您正在使用Delphi 2009或更高版本,其中string类型包含每个字符两个字节的Unicode数据。 Length函数提供字符数,而不是字节数,因此,将字符串放入内存流时,仅复制字符串中的一半字节。即使复制了所有这些字符,由于每个字符都有两个字节并且服务器可能只希望得到一个字节,因此流中仍然会有大量额外的数据。

使用其他字符串类型,例如AnsiStringUTF8String

10-06 16:06