2010-03-08 54 views
1

我使用HttpCli組件形式ICS POST請求。我使用組件附帶的示例。它說:德爾福:問題與httpcli(ICS)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; 

但事實上,它發送不

狀態=無

s.t.a.t.u

I C不明白,問題在哪裏。也許有人可以展示一個例子,如何在HttpCli組件的幫助下發送POST請求?

PS我不能使用印=)

回答

6

我想你正在使用德爾福2009年或以後,其中string型擁有兩個字節,每個字符的Unicode數據。該Length功能給出了字符,數量不是字節數,所以當你把你的串入內存流,你只能從字符串複製一半字節。但即使你複製了所有這些數據,你仍然會在數據流中產生一堆額外的數據,因爲每個字符都有兩個字節,服務器可能只希望得到一個。

使用不同的字符串類型,例如AnsiStringUTF8String