gpt4 book ai didi

PHP CURL GET 请求返回 500,其中 bash curl 成功

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

我正在尝试使用 PHP 的 CURL 向服务器发出 GET 请求,但这样做时遇到了一些困难。当我通过 PHP 发出请求时,我从外部服务器返回了 500 错误。但是,如果我使用 bash curl 发出请求,或者在浏览器中访问 URL,它会成功。

我已经将 PHP 精简为最基本的内容:

$url = 'http://example.com:8080/path/to/service?cmd=my_command&arg=example2.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_exec($ch);
print_r(curl_getinfo($ch));
curl_close($ch);

如上所述,这会从 example.com 返回 500 错误。但是,如果我执行以下操作:
[me@host ~] curl "http://example.com:8080/path/to/service?cmd=my_command&arg=example2.com"

我返回了预期的 XML 文档。

什么给?它必须与 URL 的编码有关,就像我去掉了 $url 一样var 降到只有 http://example.com:8080 PHP CURL 请求现在响应 200。我尝试替换 &%26 - 这不起作用(我也不希望它起作用,因为 & 在那里的 URL 中是有效的)。我试过做 php curl sending vars using GET wierd results 的答案建议,但这也没有帮助。

我在这里缺少什么?我敢肯定这是非常简单的事情,但它正在逃避我。

谢谢!

编辑:我刚刚尝试在 Python 中执行此操作 - 只是为了看看发生了什么 - 它在那里工作正常:
import urllib2
r = urllib2.urlopen(theURL)
r.read()

最佳答案

事实证明,我正在访问的 API 需要一个用户代理来处理所有请求,但没有提供任何信息来表明这一点。

这是普遍现象吗?除了 http://developer.github.com/v3/#user-agent-required,我找不到任何其他人这样做的例子。

通过添加,我能够让事情正常工作

curl_setopt($ch, CURLOPT_USERAGENT, "User-Agent: Some-Agent/1.0");

关于PHP CURL GET 请求返回 500,其中 bash curl 成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16717914/

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