Я хочу знать, можно ли читать / анализировать заголовок ответа HTTP после запроса POST на PHP без использования cURL ..
У меня есть PHP 5 в IIS7. Код, который я использую для POST:
$ URL = "http://www.google.com/accounts/ClientLogin"; $ postdata = http_build_query ( массив ( 'accountType' => 'GOOGLE', 'Email' => 'xxxxx@gmail.com', 'Passwd' => 'xxxxxx', 'service' => 'fusiontables', 'source' => 'fusiontables query' ) ); $ opts = array ('http' => массив ( 'header' => 'Content-type: application / x-www-form-urlencoded', 'method' => 'POST', 'content' => $ postdata ) ); $ context = stream_context_create ($ opts); $ result = file_get_contents ($ url, false, $ context);
Выше, я делаю простую аутентификацию ClientLogin для google, и я хочу получить токен Auth, который возвращается в заголовке. Echo-ing $ result дает только содержимое тела, а не заголовки, содержащие данные маркера auth.
Функция get_headers () может быть той, которую вы ищете.
Используйте ignore_errors
контекста ignore_errors
( документация ):
$opts = array('http' => array( 'header' => 'Content-type: application/x-www-form-urlencoded', 'method' => 'POST', 'content' => $postdata, 'ignore_errors' => true, ) );
Кроме того, возможно, используйте fopen
а не file_get_contents
. Затем вы можете вызвать stream_get_meta_data($fp)
чтобы получить заголовки, см. Пример # 2 по приведенной выше ссылке.