PHP HTTP请求(stream_context_create)

时间:2013-07-04 10:10:36

标签: php http

您好我正在努力让以下工作。它正在发出HTTP请求,因为我可以在另一端看到它,但它没有传递这两个值和参数。

有人可以帮忙吗?

<?php

$url = "http://example.com/ws.php?uid=0000&pin=0000";
$fields = array(
    'target1' => $_GET['target1'],
    'target2' => $_GET['target2']);

$data = http_build_query($fields);

$context = stream_context_create(array(
'http' =>  array(
    'method'  => 'POST',
    'header'  => 'Content-type: application/x-www-form-urlencoded',
    'content' => $data,
)
));

$result = file_get_contents($url, false, $context);

echo $data."<br />";
echo($result); 

?>

2 个答案:

答案 0 :(得分:2)

如果是PHP 5.2,请参阅PHP错误https://bugs.php.net/bug.php?id=41051

说明

  

http包装器忽略stream_create_context()中的'header'选项   如果该值不是作为简单数组给出的;既不是字符串也不是   map(例如array('X-My-Header'=&gt;'test'))将导致额外的   要发送的标头。

答案 1 :(得分:1)

根据我看到的示例,您需要在标头值的末尾加\r\n

'header'  => "Content-type: application/x-www-form-urlencoded\r\n" 

除此之外,您还需要提供

"Content-Length: " . strlen($data) . "\r\n",