EDIT: Мне нужно сделать POST-соединение с TTCPBlocksocket внутри движка сценариев приложений на основе delphi.Delphi synapse TTCPBlockSocket
Как сказать синапс, где Заголовок концов и тела (почтовые элементы) начинаются? Или я должен отправлять их в разные пакеты? Спасибо !
begin
Head:= TStringList.Create;
Head.Add('GET/HTTP/1.1');
Head.Add('Accept: */*');
Head.Add('Accept-Encoding: gzip, deflate');
Head.Add('Host: www.google.ru');
Head.Add('Connection: Keep-Alive');
Head.Add(#10#13);
body:= TStringList.Create;
body.Add('username=adr');
body.Add('login=adr');
body.Add('password=adr');
body.Add('r_password=adr');
body.Add('submit=register');
Socket:= TTCPBlockSocket.Create;
Socket.connect('108.167.137.28', '80');
if (Socket.LastError <> 0) then Exit;
Socket.SendString(Head.Text);
Спасибо, Дэвид, я отредактировал сообщение, надеюсь, что теперь это легче понять. –
Я прочитал руководство mcve, к сожалению, я не могу поделиться программой, которая необходима для воспроизведения самой ошибки, поскольку она не бесплатна. Мир кода, который я опубликовал, - это просто получить представление о том, что я пытаюсь выполнить, и я думаю, что мои основные вопросы довольно ясны, в основном, как создать почтовый пакет http, спасибо за помощь! –
Во-первых, ваш пример выше неверен. Запрос 'GET' не может иметь тело, вам нужно' POST'. Во-вторых, Synapse имеет класс ['THTTPSend'] (http://synapse.ararat.cz/doc/help/httpsend.html), вы должны использовать это для HTTP-запросов. Не используйте 'TTCPBlockSocket' непосредственно для реализации HTTP вручную. В приведенном выше примере вы отправили бы свои пары 'name = value' с помощью метода' THTTPSend.HttpPostURL() '. –