взаимодействие с сервером с помощью Xml Api
#1
Отправлено 26 Май 2009 - 13:24
#2
Отправлено 26 Май 2009 - 19:16
Собственно, не вопрос, а скорее наблюдение. При запросе сервер (4.70.0.200808120), видимо, не понимает 'Connection: close' в переданном http заголовке и сохраняет соединение на 15 секунд. Что не очень удобно.
HTTP/1.1 или HTTP/1.0?
можно просто с логом запроса при -verbosity=all
#3
Отправлено 29 Май 2009 - 09:44
Собственно, не вопрос, а скорее наблюдение. При запросе сервер (4.70.0.200808120), видимо, не понимает 'Connection: close' в переданном http заголовке и сохраняет соединение на 15 секунд. Что не очень удобно.
HTTP/1.1 или HTTP/1.0?
можно просто с логом запроса при -verbosity=all
HTTP/1.1
У меня нет доступа к логам.
#4
Отправлено 29 Май 2009 - 10:14
не похоже:
> telnet localhost 9080
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET / HTTP/1.1
Host: localhost:9080
HTTP/1.1 302 Found
Connection: keep-alive
Content-Length: 0
Content-Type: text/html; charset=iso-8859-1
Date: Fri, 29 May 2009 07:12:13 GMT
Keep-Alive: timeout=15
Last-Modified: Fri, 29 May 2009 07:12:13 GMT
Location: /index.ds
Server: DrWebAV-DeskServer/HEAD-5.00.1.200905240 Linux/x86_64 Lua/5.1.4 OpenSSL/0.9.8g
GET / HTTP/1.1
Host: localhost:9080
Connection: close
HTTP/1.1 302 Found
Connection: close
Content-Length: 0
Content-Type: text/html; charset=iso-8859-1
Date: Fri, 29 May 2009 07:12:31 GMT
Last-Modified: Fri, 29 May 2009 07:12:31 GMT
Location: /index.ds
Server: DrWebAV-DeskServer/HEAD-5.00.1.200905240 Linux/x86_64 Lua/5.1.4 OpenSSL/0.9.8g
Connection closed by foreign host.
#5
Отправлено 23 Июнь 2009 - 11:34
Вот что я вижу, если спросить из php-скрипта:dmitrrr
не похоже:
> telnet localhost 9080
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET / HTTP/1.1
Host: localhost:9080
HTTP/1.1 302 Found
Connection: keep-alive
Content-Length: 0
Content-Type: text/html; charset=iso-8859-1
Date: Fri, 29 May 2009 07:12:13 GMT
Keep-Alive: timeout=15
Last-Modified: Fri, 29 May 2009 07:12:13 GMT
Location: /index.ds
Server: DrWebAV-DeskServer/HEAD-5.00.1.200905240 Linux/x86_64 Lua/5.1.4 OpenSSL/0.9.8g
GET / HTTP/1.1
Host: localhost:9080
Connection: close
HTTP/1.1 302 Found
Connection: close
Content-Length: 0
Content-Type: text/html; charset=iso-8859-1
Date: Fri, 29 May 2009 07:12:31 GMT
Last-Modified: Fri, 29 May 2009 07:12:31 GMT
Location: /index.ds
Server: DrWebAV-DeskServer/HEAD-5.00.1.200905240 Linux/x86_64 Lua/5.1.4 OpenSSL/0.9.8g
Connection closed by foreign host.
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 258
Content-Type: text/xml; charset=utf-8
Date: Tue, 23 Jun 2009 08:25:07 GMT
Keep-Alive: timeout=15
Last-Modified: Tue, 23 Jun 2009 08:25:07 GMT
Server: DrWebAV-DeskServer/REL-500-5.00.0.200906170 FreeBSD/amd64 Lua/5.1.4 OpenSSL/0.9.8e
#6
Отправлено 23 Июнь 2009 - 11:44
нужно смотреть в полные логи сервера. наверняка пыхпых шлет connection: keep
#7
Отправлено 23 Июнь 2009 - 13:08
dmitrrr
нужно смотреть в полные логи сервера. наверняка пыхпых шлет connection: keep
До логов попытыюсь добраться, но hedears формируютмя "руками", что-то вроде:
<?php
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: www.example.com\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
?>
#8
Отправлено 23 Июнь 2009 - 14:49
меняем
$out = "GET / HTTP/1.1\r\n";
на
$out = "GET / HTTP/1.0\r\n";
#10
Отправлено 23 Июнь 2009 - 19:17
А если не баловаться с регистром?
все равно, по RFC регистр не важен
#12
Отправлено 24 Июнь 2009 - 09:27
Я пробовал оба варианта. Результат одинаковый.А если не баловаться с регистром?$out .= "Connection: Close\r\n\r\n";
$out .= "Connection: сlose\r\n\r\n";
#13
Отправлено 24 Июнь 2009 - 10:24
То RFC, а то конкретная реализация. По RFC сервер должен правильно реагировать на Connection: Close, однако же не реагирует.
1. то, что не реагирует еще не показано, логи отсутствуют
2. именно конкретная реализация, очень хорошо известная мне
#14
Отправлено 24 Июнь 2009 - 16:55
В порядке полного бреда - если попробовать так:
$out = "GET / HTTP/1.1\n"; $out .= "Host: www.example.com\n"; $out .= "Connection: Close\n\n";Без возвратов каретки.
#15
Отправлено 24 Июнь 2009 - 22:12
Без возвратов каретки.
тут каждый волен поступать с таким запросом как хочет. не соответствие RFC
#16
Отправлено 25 Июнь 2009 - 09:14
Хорошо, в реализацию верю.
В порядке полного бреда - если попробовать так:$out = "GET / HTTP/1.1\n"; $out .= "Host: www.example.com\n"; $out .= "Connection: Close\n\n";Без возвратов каретки.
Вообще, проблема решается несколькими способами. Можно прочитать хидеры , получить Content-Length и затем прочитать полученное число байт.К логам у меня нет доступа, поэтому сложно судить почему так происходит. На этот экспиремент сейчас времени нет.
Читают тему: 0
0 пользователей, 0 гостей, 0 скрытых