3

嗨,我正在尝试使以下工作。它正在发出 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); 

?>
4

2 回答 2

3

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

描述:

如果值不是作为简单数组给出的,http 包装器会忽略 stream_create_context( ) 中的 'header' 选项;字符串和映射(例如 array('X-My-Header' => 'test'))都不会导致发送额外的标头。

于 2014-02-13T09:24:04.763 回答
1

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

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

除此之外,您还需要提供

"Content-Length: " . strlen($data) . "\r\n",
于 2013-07-04T10:16:24.507 回答