|
|
|
| При открытии сокета всё происходи классна... то есть код
$host = "204.13.83.253";
$cfgPort = 80;
$cfgTimeOut = 10;
// open a socket
if(!$cfgTimeOut)
// without timeout
$s = fsockopen($host, $cfgPort);
else
// with timeout
$s = fsockopen($host, $cfgPort, &$errno, &$errstr, $cfgTimeOut);
|
классна срабатывает... но вот запросы почему то не идут... хотя они проснифаны http-снифером и после обращения этих всех запросов в файл выводится следующее
HTTP/1.1 400 Bad Request Date: Thu, 09 Mar 2006 09:11:24 GMT Server: Apache Content-Length: 294 Connection: close Content-Type: text/html; charset=iso-8859-1
Bad Request
Your browser sent a request that this server could not understand.
Apache Server at www.worldlingo.com Port 80
|
может к нему надо кидать какие нить определённые запросы или ещё что нить... интересна и оч узнать ваши предложения по этому поводу =) | |
|
|
|
|
|
|
|
для: eclipse
(09.03.2006 в 12:21)
| | Он же честно ответил "Ваш браузер прислал запрос, который мне не понять. "
И нам наверное тоже не понять, поскольку не видно самого запроса.
Вы бы показали пример запроса, а не только отклика. | |
|
|
|
|
|
|
|
для: Trianon
(09.03.2006 в 12:27)
| | =) сейчас... вот он =)
fputs ($s, "GET /wl/translate?wl_qopt=0&wl_lp=JA-en&wl_fl=2&wl_rurl=http://auctions.yahoo.co.jp/jp/0-category.html&wl_url=http://site.com/0.html HTTP/1.1 \n");
fputs ($s, "Content-length: * \n");
fputs ($s, "Connection: Keep-Alive, TE \n");
fputs ($s, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.50 \n");
fputs ($s, "Host: $host \n");
fputs ($s, "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 \n");
fputs ($s, "Accept-Language: ru, en \n");
fputs ($s, "Accept-Charset: windows-1251, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1 \n");
fputs ($s, "Referer: http://www.hpforum.ru\n");
fputs ($s, "Content-Type: text/html;charset=euc-jp \n");
fputs ($s, "pragma: no-cache \n");
fputs ($s, "Cache-Control: no-cache, no-store \n");
fputs ($s, "Keep-Alive: timeout=3 \n");
fputs ($s, "Connection: Keep-Alive \n");
|
| |
|
|
|
|
|
|
|
для: eclipse
(09.03.2006 в 12:38)
| | Я даже не знаю, что Вам ответить.
Первое, что бросается в глаза, это синтаксис.
Почему-то строки завершаются LF вместо CRLF, в конце каждой строки воткнут пробел.
В поле длины тела запроса стоит звездочка...
А второе - такие ... обильные... условия запроса.
Вы действительно хотите от сервера то, о чем пишите?
Вы хотите общаться с сервером по протоколу HTTP 1.1 а не HTTP 1.0 , хотя 1.1 стократ сложнее? (Я, например, его не знаю. )
Хотите держать соединение установленным 3 секунды (Connection: Keep-Alive, Keep-alive: timeout=3)?
Хотите принимать в ответ дикое количество разных типов файлов (Accept:) , созданных на разных языках (Accept-Language: ) и в разных кодировках(Accept-Charset:)?
И чей Content-Type у Вас text/html;charset=euc-jp ?
Или просто срисовали откуда-то весь этот текст?
Попробуйте упростить запрос. Попробуйте сформировать только те условия, которые Вам действительно необходимы.
GET ...
Host: $host
и хватит на первый раз.
И еще. в параметрах GET , в частности wl_rurl , значения стоит urlendode'ить.
Кстати, очень возможно, что и параметры применены избыточно. | |
|
|
|
|
|
|
|
для: Trianon
(09.03.2006 в 13:30)
| | такой же текст... точнее примерно такой же но другой по значениям я раньше использовал при коннекте к другому сайту... и с ним проблем не было... тогда постараюст как можно лучше упростить запросы... может и поможет =) | |
|
|
|
|
|
|
|
для: eclipse
(09.03.2006 в 13:42)
| | вообще всегда использовал сокеты для отображения ниформации с другого сайта на свой сайт... но недавно узнал о
интересно узнать что лучше использовать в таких случаях... сокеты или именно эту функцию??? | |
|
|
|
|
|
|
|
для: eclipse
(09.03.2006 в 14:16)
| | Если вам не требуется подделки реферера, пользовательского агента, cookie или SID, лучше, конечно, пользоваться file_get_contents(), так как она работает быстрее. Однако ряд серверов могут выкидывать фортели, например, предоставлять информацию в другой кодировке, так как file_get_contents() не передаёт предпочитаемые медиа-типы. | |
|
|
|
|
|
|
|
для: cheops
(09.03.2006 в 19:30)
| | =) всё ясно =) буду иметь ввиду =) а так мне уже всё таки удалось подсоединиться к вёлдиндига =) | |
|
|
|
|
|
|
|
для: eclipse
(09.03.2006 в 21:04)
| | >мне уже всё таки удалось подсоединиться к вёлдиндига =)
Написали бы текст успешного запроса... интересно же! :) | |
|
|
|
|
|
|
|
для: Trianon
(10.03.2006 в 10:00)
| | =) раз интересна то вот =)
$url = "http://www.nnm.ru";
fputs ($s, "GET http://$host/wl/translate?wl_qopt=0&wl_lp=RU-es&wl_fl=2&wl_rurl=$url&wl_url=$url HTTP/1.1 \n");
fputs ($s, "Host: $host \r\n\r\n");
fputs ($s, "Connection: close\n\n");
|
| |
|
|
|
|
|
|
|
для: eclipse
(10.03.2006 в 14:21)
| | fputs ($s, "Connection: close\n\n"); смело можете убрать. Все равно сервер эту строку среди полей заголовка не увидит.
И версию можете понизить до HTTP 1.0 | |
|
|
|