2010-03-08 4 views
1

Я использую форму компонента HttpCli ICS для отправки запроса. Я использую пример, который поставляется вместе с компонентом. Он говорит:Delphi: проблема с почтовым методом 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

I C не понимаю, где проблема. Может быть, кто-то может показать пример, как отправить запрос POST с помощью компонента HttpCli?

PS Я не могу использовать Indy =)

ответ

6

Я полагаю, вы используете Delphi 2009 или более поздней версии, где string тип содержит два байта-за характера данных Unicode. Функция Length дает число символов, а не число байт, поэтому, когда вы помещаете свою строку в поток памяти, вы копируете только половину байты из строки. Тем не менее, даже если вы скопировали все из них, у вас все равно будет множество дополнительных данных в потоке, поскольку каждый символ имеет два байта, и сервер, вероятно, только рассчитывает получить его.

Используйте другой тип строки, например AnsiString или UTF8String.

Смежные вопросы