gpt4 book ai didi

php - 为什么 fopen 在响应为 HTTP 204(空内容)时发出警告?

转载 作者:行者123 更新时间:2023-12-04 15:02:46 25 4
gpt4 key购买 nike

我正在使用 PHP fopen() 向 ASP.NET MVC 端点发出 GET 请求。当请求成功时,有一个空响应和一个 HTTP 204 状态代码。

但是,fopen 会发出警告,因此我正在尝试找出解决此问题的最佳方法。

$handle = fopen("http://myservice.com/test.php?foo=bar", "r");

警告是:

Warning: fopen(http://myservice.com/test.php?foo=bar) [function.fopen]: failed to open stream: HTTP request failed! HTTP/1.1 204 No Content in E:\web\test.php on line 18

我很困惑为什么 fopen 甚至会发出警告。处理这个问题的最佳方法是什么?我应该:

  1. 在 fopen 调用前加上“@”以抑制警告?
  2. 更改 web 服务以返回一些内容,例如“OK”,以便状态为 HTTP 200 OK?
  3. ...还有什么事吗?

最佳答案

是的,不应该。所有 20x 状态代码都应视为正常。但这可能取决于您的 PHP 版本。从 PHP5.3 开始,它会检查 response_code >= 200 and < 400否则只会提示。

但以 PHP 5.2 为例:http://svn.php.net/repository/php/php-src/branches/PHP_5_2/ext/standard/http_fopen_wrapper.c包含这个花絮:

        switch(response_code) {
case 200:
case 206: /* partial content */
case 302:
case 303:
case 301:
reqok = 1;
break;

这不包括您的 204状态代码,并解释为什么以下代码会触发警告。 (至少没有必要提交错误报告,因为它显然已经这样做了。)

在这种情况下,我不确定它是否适合您的用例,应谨慎使用,但是 @确实会抑制警告。

关于php - 为什么 fopen 在响应为 HTTP 204(空内容)时发出警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5475621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com