Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Отличие запросе через браузер и через file_get_contents
Форумы портала PHP.SU » » Работа с сетью » Отличие запросе через браузер и через file_get_contents

Страниц (1): [1]
 

1. lexus1990 - 23 Августа, 2011 - 16:16:37 - перейти к сообщению
Добрый день! Существует обмен через xml шлюз. У системы, откуда присылается xml есть способ запроса - асинхронный. Сначала отсылается запрос вида site.ru?country=111&async=1. Приходит ответ с id сессии nnn.
Далее посылается запрос вида site.ru?country=111&session=nnn, на что приходит пустой xml
PHP:
скопировать код в буфер обмена
  1. <?xml version="1.0" encoding="UTF-8"?><?/xml?>

- т.е. система отвечает. В случае, когда авторизация не пройдена - приходит ответ.
Далее делается тот же самый запрос через браузер - и чудо - в ответе необходимые данные. Какая между этими двумя способами разница?
PHP:
скопировать код в буфер обмена
  1.  
  2.     ob_start();
  3.     $str = $host.$url;
  4.     $result = file_get_contents($str);
  5.     ob_end_clean();
  6.     var_dump($result,$str);
  7.     $session = simplexml_load_string($result);
  8.     $id_session = (string) $session['session'];
  9.     $url = substr($url,0,strpos($url,"async=1")-1);
  10.     $url .= "&Session=".$id_session."&paging=on&page=1";
  11.        
  12.     ob_start();
  13.     $str = $host.$url;
  14.     $result = file_get_contents($str);
  15.     ob_end_clean();
  16.     var_dump($result, $str);
2. Viper - 25 Августа, 2011 - 07:11:59 - перейти к сообщению
lexus1990 пишет:
Какая между этими двумя способами разница?

в заголовках, которые отсылает браузер при запросе, и которые отсутствуют при file_get_contents
3. DeepVarvar - 25 Августа, 2011 - 07:16:18 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. if (isset($_SERVER['HTTP_X_REQUESTED_WITH'])) echo "it's ajax request!";
4. lexus1990 - 25 Августа, 2011 - 08:04:58 - перейти к сообщению
Как отследить заголовки, которые отсылает браузер? Видимо если разница в заголовках - через curl надо запрос отправлять?
5. Viper - 25 Августа, 2011 - 08:08:23 - перейти к сообщению
lexus1990 для контроля заголовков смотрите firebug(для firefox) или dragonfly для opera. В safari оно встроено, для IE тоже есть шняга(забыл название).
Отправляйте с помощью cURL.

 

Powered by ExBB FM 1.0 RC1