Как получить заголовок с потоком?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как получить заголовок с потоком?

Сообщение Anonymous »

Рассмотрим эту функцию:

Код: Выделить всё

function use_fopen($url, $make_post_field, $headers = '') {

$context = array(
'http' => array(
'method'  => 'POST',
'timeout' => '60',
'content' => $make_post_field)
);
$header = "Content-type: application/x-www-form-urlencoded\r\n";
if (!empty($headers)) {
foreach ($headers as $head) {
$header.="$head\r\n";
}
}

$context['http']['header'] = $header;
$context = stream_context_create($context);

//$contents = @file_get_contents($url, null, $context);
$fp = fopen($url, 'r', false, $context);

$stream_meta_data = @stream_get_meta_data($fp);
print_r($stream_meta_data );
fclose($fp);
}
Я использую эту функцию следующим образом:

Код: Выделить всё

$headers = array ('baz: bar');
$data = array ('foo' => 'bar', 'bar' => 'baz');
$data = http_build_query($data);
print(use_fopen("http://www.example.com/phpinfo.php", $data, $headers));
Поскольку целевым URL-адресом является phpinfo, я могу проверить, что для $_POST['foo'] установлено значение bar и

Код: Выделить всё

CONTENT_TYPE = application/x-www-form-urlencoded

Код: Выделить всё

HTTP_FOO  = baz


Кажется, контекст работает нормально, но когда я использую

Код: Выделить всё

$stream_meta_data = @stream_get_meta_data($fp);
print_r($stream_meta_data );
Я понимаю

Код: Выделить всё

Array
(
[timed_out] =>
[blocked] => 1
[eof] =>
[wrapper_data] => Array
(
[0] => HTTP/1.1 200 OK
[1] => Date: Tue, 02 Aug 2016 11:46:36 GMT
[2] => Server: Apache
[3] => Connection: close
[4] => Content-Type: text/html; charset=UTF-8
)

[wrapper_type] => http
[stream_type] => tcp_socket/ssl
[mode] => r
[unread_bytes] => 8061
[seekable] =>
[uri] => http://wwwexample.com/phpinfo.php
)
почему тип контента неправильный, а HTTP_FOO, который на самом деле является заголовком, здесь не отображается? изменение ниже также не помогло. Что я должен делать? получить пользовательские заголовки и правильный тип контента?

Код: Выделить всё

$contents = @file_get_contents($url, null, $context);
print_r(get_headers($url));
Я искал SO и нашел это. Как получить заголовки ответа HTTP после запроса POST в PHP? но, как я уже сказал, я попробовал какstream_get_meta_data($fp), так и get_headers($url), но не получил свои собственные заголовки. что еще мне делать?

Подробнее здесь: https://stackoverflow.com/questions/387 ... ith-stream
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»