您好我正在努力让以下工作。它正在发出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);
?>
答案 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",