HTTP: GET, POST

 
RU <Slowspeed> #30.05.2001 11:56
+
-
edit
 
Для чего служат и чем отличаются запросы GET и POST?
 
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★☆
Служат для передачи данных на сервер (например, результат заполнения формы или файл для аплоада)

GET передаёт данные в адресной строке браузера в виде ?param1=value1&param2=vaule2&...

POST передаёт "в скрытом" виде.
 
RU <Slowspeed> #30.05.2001 12:48
+
-
edit
 
Тут такое дело - мне надо от сервлета (реализующего doPost)получить через WindowsSocket некую информацию. Я создаю сокет, конекчусь и посылаю ему "POST /servlets/ass_selbanks_serv?id_ac=someacc", на что получаю от сервера Error 500: Internal Server Error. Что-то я делаю не так,очевидно. Наверное параметры передаю. Но как они правильно передаются не понимаю :-(
 
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★☆
Сервлетами не занимался...
Первое, что в голову приходит - ты строку запроса кодируешь? (пробел в плюс, все недопустимые символы в их код и т.п. Т.е. '?query=request string + some' -> 'query=request+string+%2c+some')

Второе - точно там POST должно быть, а не GET?
 
RU <Slowspeed> #30.05.2001 14:52
+
-
edit
 
Да я ими тоже не занимался пока сегодня утром начальство не придумало наш закрытый CD продукт ихнему американскому SyBase прицепить.
Что значит "В скрытом виде"? как должна выглядеть синтаксис команды POST, если надо передать два параметра - строку и число?
Там точно POST - doGet у сервлета не определено...
 
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★☆
Смотри, как на PHP реализована отсылка через POST на ICQ-форму отсылки сообщения:
<?

   flush();

   // поля надо заполнить
   $from='Dmitry Borodin';
   $fromemail='ваше_мыло@php.spb.ru';
   $subject='сабж';
   $to='00000000';  // <-- номер. (Уверен, что кто-нить не догадается :-)
   $body='само сообщение';

   $submit='Send Message';        // don't edit
   $ref="http://wwp.icq.com/$to"; // don't edit


   // формирование заголовка
   $PostData=
   "from=".urlencode($from)."&".
   "fromemail=".urlencode($frommail)."&".
   "subject=".urlencode($subject)."&".
   "body=".urlencode($body)."&".
   "to=".urlencode($to)."&".
   "submit=".urlencode($submit);
  
   $len=strlen($PostData);
  
   $nn="rn";
   $zapros=
"POST /scripts/WWPMsg.dll HTTP/1.0".$nn.
"Referer: $ref".$nn.
"Content-Type: application/x-www-form-urlencoded".$nn.
"Content-Length: $len".$nn.
"Host: wwp.icq.com".$nn.
"Accept: */*".$nn.
"Accept-Encoding: gzip, deflate".$nn.
"Connection: Keep-Alive".$nn.
"User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT)".$nn.
"".$nn.
"$PostData";

   echo $zapros."nn-------------nnn";
   flush();

   // открываем сокет и шлем заголовок
   $fp = fsockopen("wwp.icq.com", 80, &$errno, &$errstr, 30);
   if(!$fp) { print "$errstr ($errno)
n"; exit; }    // для наглядности выводим заголовок ответа и страницу на экран    fputs($fp,$zapros);    print fgets($fp,20048);    fclose($fp); ?>

 
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★☆
Через GET должно быть сильно проще.
Типа

GET /path/script?param1=value1&param2=value2&...
 
RU <Slowspeed> #30.05.2001 15:45
+
-
edit
 
ОК, спасибо. Завтра буду пробовать.
А вот что транслируется $nn?
 
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★☆
$nn="rn";

Не пойму, правда, почему они это в сам запрос не вставили.

Оператор "точка" в PHP, если не в курсе - это слияние строк.
Со знака $ тачинаются переменные.
Переменные внутри текста меняются на своё значение.
urlencode(..) - это встроенная функция, которая и подменяет пробелы на плюсы, а небуквенные знаки на коды через процент.
 

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru