stream_context_create似乎向POST-Field添加了无效字符

时间:2015-04-10 10:58:04

标签: php http-post

我尝试向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运行相同的代码效果很好。

0 个答案:

没有答案