Форум: "Сети";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];
ВнизПередача данных на сервер методом POST Найти похожие ветки
← →
Василий Васильевич Пупкин (2004-12-15 16:21) [0]Помогите, пожалуйста. На сервере стоит скрипт обработки запросов. Запросы принимаются методом POST. Как мне написать обращение к http://server.ru/cgi-bin/script.cgi с параметром "name" равным "Вася Пупкин". Еще раз обращаю ваше внимание: принимаются только данные переданые методом POST.
← →
Хакер © (2004-12-15 16:24) [1]сокеты заюзай
← →
Василий Васильевич Пупкин (2004-12-15 16:30) [2]А проще нельзя? Есть имя пареметра. Надо отправить его на сервер
← →
Digitman © (2004-12-15 16:34) [3]Удалено модератором
← →
Василий Васильевич Пупкин (2004-12-15 16:57) [4]Ну 80-й порт и что?
← →
Василий Васильевич Пупкин (2004-12-15 21:33) [5]Ну что дальше то?
← →
Jel © (2004-12-15 23:40) [6]
> Ну что дальше то?
Дальше читать RFC 1945 до полного простветления. :)
← →
Piter © (2004-12-16 00:43) [7]В чем проблема конкретно? Там ничего сложного нету.
Коннектишься к хосту (да хотя бы обычным TClientSocket), выдранному из URL по определенному порту (зачастую 80) и передаешь комманды, ждешь ответа. Вот например перехват трафика для этого сайта при запросе страниц.
Это посылается серверу после коннекта:GET http://delphimaster.net/view/15-1074376310/
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*
Accept-Language: ru
Cookie: small_thread=0; delphi_name=[ИМЯ]; delphi_email=; id=[тут должно быть нечто]; lg=[тут должно быть нечто]; ChatColor=EF4F78
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; MyIE2)
Host: www.delphimaster.ru
Соответственно
1) GET <имя странички которую хочу>. Тут все понятно
2) Accept <bla-bla> это вроде того, что ты готов принять. Можешь писать здесь все подряд, мол готов принять все :)
3) Accept-Language: ru - сообщаешь свой язык. Теоретически сервер может выдавать разныую инфу для разных языков. Но по-моему, это не используется. Или очень редко
4) Cookie: <bla-bla> - сообщаешь свои куки для этого сайта. Это чтобы в поле ответа в "Ваше имя" сервер подставил что надо.
Подозреваю, что id и lg используется, чтобы не вводить пароль каждый раз.
5) User-Agent: <bla-bla> - пишешь какая программа посылает запрос (тут броузер пишет свою идентификацию, Опера например нетскейпом может прикинуться). Опять же теоретически сервер может выдавать разную инфу для разныз броузеров, но это редко используется.
6) Host: www.delphimaster.ru - хост, куда коннектился. По-моему, можно и не указывать, мало кто использует данную информацию
А, вспомнил! После GET"а ты должен послать код перевода строки (в Delphi это #13#10). После запроса должен послать два кода перевода строки. После чего ждешь ответа.
А вот пример ответа:HTTP/1.1 200 OK
|перевод строки|
Via: 1.0 MAIL
Proxy-Connection: Keep-Alive
Content-Length: 12479
Content-Type: text/html; charset=windows-1251
Server: 0W/0.6d
Date: Tue, 12 Aug 2003 18:01:08 GMT
charset: windows-1251
|двойной перевод строки>|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<TITLE>Мастера DELPHI
.....
<и дальше пошел текст странички>
Ну тут понятно. "HTTP/1.1 200 OK" - означает что сервер обработал успешно запрос и сча тебе инфа посыпится :)
После этого идет код перевода строки.
Via: 1.0 MAIL - не знаю что это. Может, McSimm разъяснит
Content-Length: 12479 - длина самого текста странички, которая будет выдана.
charset=windows-1251 - кодирвока выдаваемой страницы
Ну остальное и так понятно
После заголовка идет код перевода строки (или два - не помню).
После чего посылается непосредственно текст страницы. Размер этого текста будет как раз равен Content-Length
Еще сервер может тебе выдать информацию архивированную, он об этом сообщит в заголовке параметром gzip. Это если ты попросишь.
---------------------------------------------------------------------------------------------------------------
А вот насчет поста, смотри пример:POST http://www.beeonline.ru/servlet/send/sms/ HTTP/1.0
Accept-Language: ru,ja;q=0.5
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/4.7 [en] (Win95; I)
Referer: http://BeeOnLine-Express
Host: www.beeonline.ru
Content-Length: 91
[ПАРАМЕТРЫ]
Указываешь имя апплета, http://www.beeonline.ru/servlet/send/sms/
для этого форума будет http://www.delphimaster.ru/cgi-bin/forum.pl
После заголовка двойной перевод строки и идут параметры запроса.
Допустим нужно передать параметры name, email.
Ты хочешь передать их значения "Undert" и "noemail@noemail.com" соответственно.
Тогда вместо [ПАРМЕТРЫ] будетname=undert&email=noemail@noemail.com
Никаких кавычек. Разделение между параметрами "&"
допустим, для ответа на вопрос в этом форуме надо передать параметры апплету http://www.delphimaster.ru/cgi-bin/forum.pl такие:
name, email, text, n, id
(может еще чего надо, все это можно посмотреть в исходном коде HTML этой страницы).
Да, еще один пункт, нельзя передавать значение параметров по русски. Ты наверное видел как они выглядят, типа "%CC%E0%F1%F2%E5%F0%E0+%C4%E5%EB%FC%F4%E8" - это означает "Мастера Дельфи"
Для перевода русского текста в нужные символы используй:function EncodeContent(const msg : String) : String;
var
I : Integer;
begin
Result := "";
for I := 1 to Length(msg) do begin
if msg[I] = " " then
Result := Result + "+"
else if msg[I] in ["a".."z", "A".."Z", "0".."9"] then
Result := Result + msg[I]
else
Result := Result + "%" + IntToHex(ord(msg[I]), 2);
end;
end;
После чего можешь подставлять строку, возвращаемую этой функцией в параметр.
← →
Piter © (2004-12-16 00:48) [8]В чем проблема конкретно? Там ничего сложного нету.
Коннектишься к хосту (да хотя бы обычным TClientSocket), выдранному из URL по определенному порту (зачастую 80) и передаешь комманды, ждешь ответа. Вот например перехват трафика для этого сайта при запросе страниц.
Это посылается серверу после коннекта:GET http://delphimaster.net/view/15-1074376310/
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*
Accept-Language: ru
Cookie: small_thread=0; delphi_name=[ИМЯ]; delphi_email=; id=[тут должно быть нечто]; lg=[тут должно быть нечто]; ChatColor=EF4F78
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; MyIE2)
Host: www.delphimaster.ru
Соответственно
1) GET <имя странички которую хочу>. Тут все понятно
2) Accept <bla-bla> это вроде того, что ты готов принять. Можешь писать здесь все подряд, мол готов принять все :)
3) Accept-Language: ru - сообщаешь свой язык. Теоретически сервер может выдавать разныую инфу для разных языков. Но по-моему, это не используется. Или очень редко
4) Cookie: <bla-bla> - сообщаешь свои куки для этого сайта. Это чтобы в поле ответа в "Ваше имя" сервер подставил что надо.
Подозреваю, что id и lg используется, чтобы не вводить пароль каждый раз.
5) User-Agent: <bla-bla> - пишешь какая программа посылает запрос (тут броузер пишет свою идентификацию, Опера например нетскейпом может прикинуться). Опять же теоретически сервер может выдавать разную инфу для разныз броузеров, но это редко используется.
6) Host: www.delphimaster.ru - хост, куда коннектился. По-моему, можно и не указывать, мало кто использует данную информацию
А, вспомнил! После GET"а ты должен послать код перевода строки (в Delphi это #13#10). После запроса должен послать два кода перевода строки. После чего ждешь ответа.
А вот пример ответа:HTTP/1.1 200 OK
|перевод строки|
Via: 1.0 MAIL
Proxy-Connection: Keep-Alive
Content-Length: 12479
Content-Type: text/html; charset=windows-1251
Server: 0W/0.6d
Date: Tue, 12 Aug 2003 18:01:08 GMT
charset: windows-1251
|двойной перевод строки>|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<TITLE>Мастера DELPHI
.....
<и дальше пошел текст странички>
Ну тут понятно. "HTTP/1.1 200 OK" - означает что сервер обработал успешно запрос и сча тебе инфа посыпится :)
После этого идет код перевода строки.
Via: 1.0 MAIL - не знаю что это. Может, McSimm разъяснит
Content-Length: 12479 - длина самого текста странички, которая будет выдана.
charset=windows-1251 - кодирвока выдаваемой страницы
Ну остальное и так понятно
После заголовка идет код перевода строки (или два - не помню).
После чего посылается непосредственно текст страницы. Размер этого текста будет как раз равен Content-Length
Еще сервер может тебе выдать информацию архивированную, он об этом сообщит в заголовке параметром gzip. Это если ты попросишь.
---------------------------------------------------------------------------------------------------------------
А вот насчет поста, смотри пример:POST http://www.beeonline.ru/servlet/send/sms/ HTTP/1.0
Accept-Language: ru,ja;q=0.5
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/4.7 [en] (Win95; I)
Referer: http://BeeOnLine-Express
Host: www.beeonline.ru
Content-Length: 91
[ПАРАМЕТРЫ]
Указываешь имя апплета, http://www.beeonline.ru/servlet/send/sms/
для этого форума будет http://www.delphimaster.ru/cgi-bin/forum.pl
После заголовка двойной перевод строки и идут параметры запроса.
Допустим нужно передать параметры name, email.
Ты хочешь передать их значения "Undert" и "noemail@noemail.com" соответственно.
Тогда вместо [ПАРМЕТРЫ] будетname=undert&email=noemail@noemail.com
Никаких кавычек. Разделение между параметрами "&"
допустим, для ответа на вопрос в этом форуме надо передать параметры апплету http://www.delphimaster.ru/cgi-bin/forum.pl такие:
name, email, text, n, id
(может еще чего надо, все это можно посмотреть в исходном коде HTML этой страницы).
Да, еще один пункт, нельзя передавать значение параметров по русски. Ты наверное видел как они выглядят, типа "%CC%E0%F1%F2%E5%F0%E0+%C4%E5%EB%FC%F4%E8" - это означает "Мастера Дельфи"
Для перевода русского текста в нужные символы используй:function EncodeContent(const msg : String) : String;
var
I : Integer;
begin
Result := "";
for I := 1 to Length(msg) do begin
if msg[I] = " " then
Result := Result + "+"
else if msg[I] in ["a".."z", "A".."Z", "0".."9"] then
Result := Result + msg[I]
else
Result := Result + "%" + IntToHex(ord(msg[I]), 2);
end;
end;
После чего можешь подставлять строку, возвращаемую этой функцией в параметр.
← →
Василий Васильевич Пупкин (2004-12-16 21:31) [9]Ну не получается! wb1- webbrowser
var
i: Integer;
EncodedStr: string;
Header: OleVariant;
Post: OleVariant;
begin
EncodedStr := "forum=2&subj=message&body=teme";
Post := VarArrayCreate([0, Length(EncodedStr) - 1], varByte);
for I := 0 to Length(EncodedStr) do
Post[I - 1] := Ord(EncodedStr[I]);
Header := "Content-Type: application/x-www-form-urlencoded" + #10#13;
wb1.Navigate("http://forum.dom2.ru/index.phtml", EmptyParam,
EmptyParam, Post, Header);
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.053 c