2016-09-12 17 views
1

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);  
+0

Спасибо, Дэвид, я отредактировал сообщение, надеюсь, что теперь это легче понять. –

+0

Я прочитал руководство mcve, к сожалению, я не могу поделиться программой, которая необходима для воспроизведения самой ошибки, поскольку она не бесплатна. Мир кода, который я опубликовал, - это просто получить представление о том, что я пытаюсь выполнить, и я думаю, что мои основные вопросы довольно ясны, в основном, как создать почтовый пакет http, спасибо за помощь! –

+0

Во-первых, ваш пример выше неверен. Запрос 'GET' не может иметь тело, вам нужно' POST'. Во-вторых, Synapse имеет класс ['THTTPSend'] (http://synapse.ararat.cz/doc/help/httpsend.html), вы должны использовать это для HTTP-запросов. Не используйте 'TTCPBlockSocket' непосредственно для реализации HTTP вручную. В приведенном выше примере вы отправили бы свои пары 'name = value' с помощью метода' THTTPSend.HttpPostURL() '. –

ответ

1

решаемые этой теме - How are parameters sent in an HTTP POST request?

Содержание помещается после заголовков HTTP. Формат HTTP POST должен содержать заголовки HTTP, а затем пустую строку, за которой следует тело запроса . Переменные POST хранятся в виде пар ключ-значение в корпусе .