Wie bekomme ich einen Header mit Stream?Php

PHP-Programmierer chatten hier
Guest
 Wie bekomme ich einen Header mit Stream?

Post by Guest »

Betrachten Sie diese Funktion:

Code: Select all

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);
}
Ich verwende die Funktion folgendermaßen:

Code: Select all

$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));
Da die Ziel-URL phpinfo ist, kann ich überprüfen, ob $_POST['foo'] auf bar und
< gesetzt ist br />

Code: Select all

CONTENT_TYPE = application/x-www-form-urlencoded

Code: Select all

HTTP_FOO  = baz


Der Kontext scheint also gut zu funktionieren, aber wenn ich

verwende

Code: Select all

$stream_meta_data = @stream_get_meta_data($fp);
print_r($stream_meta_data );
Ich bekomme

Code: Select all

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
)
Warum ist der Inhaltstyp falsch und HTTP_FOO, das eigentlich ein Header ist, wird hier nicht angezeigt? Die Änderung unten hat auch nicht geholfen. Was soll ich tun? um benutzerdefinierte Header und den richtigen Inhaltstyp zu erhalten?

Code: Select all

$contents = @file_get_contents($url, null, $context);
print_r(get_headers($url));
Ich habe SO gesucht und Folgendes gefunden: Wie bekomme ich HTTP-Antwortheader nach einer POST-Anfrage in PHP? aber wie gesagt, ich habe sowohl stream_get_meta_data($fp) als auch get_headers($url) ausprobiert, aber ich bekomme meine benutzerdefinierten Header nicht. Was soll ich sonst noch tun?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post