我尝试向Google Api终端发送帖子请求,这通常是一件非常容易的事情。不幸的是,服务器正在运行PHP 5.4,似乎有一个错误(或者我疯了)
我几乎使用相同的代码 How do I send a POST request with PHP?
该示例中使用的所有内容都与PHP> 5.0
兼容<?php
$url = 'https://myserver/echo.php';
$data = array('key1' => 'value1', 'key2' => 'value2');
// use key 'http' even if you send the request to https://...
$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data),
),
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
var_dump($result);
MyServer确实显示了Post-Variables: echo“POST:\ n”; 的var_dump($ _ POST);
如果我使用PHP 5.4在服务器上执行该代码,结果如下:
POST:
array(2) {
["key1"]=> string(6) "value1" ["amp;key2"]=> string(6) "value2"
}
我的问题是“amp; key2”,在我看来是stream_context_create的错误行为。好像它并没有真正跳过&amp; (; amp)登录请求参数。
此问题是否有解决方法?由于这个小问题,我不能强迫我的客户改变他们的webhoster。
使用PHP 5.5.19运行相同的代码效果很好。