如何修复file_get_contents警告

时间:2011-12-13 00:54:37

标签: php google-checkout

我在Google Checkout网关处理程序中使用以下代码,但是当我测试它时,它会显示以下警告:

  

警告:file_get_contents(https://checkout.google.com/api/checkout/v2/checkoutForm/Merchant/XXXXXXXXXXX)[function.file-get-contents]:无法打开流:HTTP请求失败!第116行/sample.php中需要HTTP / 1.0 411长度

我的第116行如下所示:

//some more code//
$ctx = stream_context_create($params);
echo file_get_contents($_googleUrl, false, $ctx);
exit;

有人可以帮助我。

1 个答案:

答案 0 :(得分:0)

来自w3.org

  

411长度

     

服务器拒绝接受没有定义的请求   内容长度。如果添加有效请求,客户端可以重复该请求   Content-Length头字段,包含实体主体的长度   在请求消息中。

这可能意味着您要么未在请求中发送或发送错误的Content-Length标头。在不知道$params数组的内容的情况下,很难对其进行调试。因此,如果要发送错误的标题并让PHP自动处理(假设PHP会执行此操作),或者如果您当前没有发送它,则需要删除Content-Length标头,发送正确的标头。正如其他人所建议的那样,cURL可能是一个更可行的选择。

此外,进行更多研究表明,当您使用POST时,某些服务器(mis)会以这种方式运行,但不提供任何POST变量。因此,如果是这种情况,您可以通过两种方式之一解决此问题。

  1. 使用GET代替POST(首选)。
  2. 如果您不能使用GET,请提供一些虚拟POST变量,如果您没有发送任何。