Delphi:httpcli(ICS)post方法的问题

时间:2010-03-08 18:24:45

标签: delphi post httpclient

我正在使用HttpCli组件表单ICS来发送请求。我使用了组件附带的示例。它说:

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我不能使用Indy =)

1 个答案:

答案 0 :(得分:6)

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

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