这是一个非常有趣的问题。我正在为微型网络广播播放器编写 API。为了获得当前曲目,我正在解析演员服务器前端。在http://deepmix.ru的示例中,这是一个 SHOUTcast 1.x 服务器,我能够解析 URI http://85.21.79.31:7128/played.html。当我在 FireFox 中请求 URI 时,我得到显示播放曲目列表的网页。如果我从托管 API 的服务器的 BASH 请求带有 cURL 的 URI,我会得到该服务器的 404。$ curl -v -G http://85.21.79.31:7128/played.html* Trying 85.21.79.31...* Connected to 85.21.79.31 (85.21.79.31) port 7128 (#0)> GET /played.html HTTP/1.1> Host: 85.21.79.31:7128> User-Agent: curl/7.47.0> Accept: */*> ICY 404 Resource Not Foundicy-notice1:<BR>SHOUTcast Distributed Network Audio Server/Linux v1.9.8<BR>icy-notice2:The resource requested was not found<BR>* Connection #0 to host 85.21.79.31 left intact我认为适当的用户代理可以帮助并添加Mozilla以接收网页。所以这奏效了。$ curl -v -A "Mozilla" -G http://85.21.79.31:7128/played.html* Trying 85.21.79.31...* Connected to 85.21.79.31 (85.21.79.31) port 7128 (#0)> GET /played.html HTTP/1.1> Host: 85.21.79.31:7128> User-Agent: Mozilla> Accept: */*> * HTTP 1.0, assume close after body< HTTP/1.0 200 OK< content-type:text/html< <HTML>[...]<title>SHOUTcast Administrator</title>[...]</HEAD><BODY topmargin=0 leftmargin=0 marginheight=0 marginwidth=0 bgcolor=#000000 text=#EEEEEE link=#001155 vlink=#001155 alink=#FF0000><font class=default><table width=100% border=0 cellpadding=0 cellspacing=0><tr><td height=50><font class=logoText> SHOUTcast Song History</font></td></tr><tr><td height=14 align=right><font class=ltv><a id=ltv href="http://www.shoutcast.com/">SHOUTcast Server Version 1.9.8/Linux</a>[...]</body></html>根据我的发现,我将请求转移到我的 PHP cURL 实现中。$curlHandler = curl_init();curl_setopt_array( $curlHandler, [ CURLINFO_HEADER_OUT => true, CURLOPT_URL => 'http://85.21.79.31:7128/played.html', CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_USERAGENT => 'Mozilla', CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => false, CURLOPT_NOBODY => true ]);在比较请求标头时,没有区别。所以我假设我看不到 BASH 和 PHP 的 cURL 实现之间存在差异。那么这里会发生什么呢?
1 回答
ITMISS
TA贡献1871条经验 获得超8个赞
这是我自己的一个很大的错误。
首先,我将其留CURLOPT_NOBODY => true
在代码中(请参阅问题),这会导致空响应。
其次,我留file_get_contents( $uri )
在了我的代码中,这导致了问题中发布的警告。
总之,在删除这些时,两个 cURL 都按预期工作。
- 1 回答
- 0 关注
- 196 浏览
添加回答
举报
0/150
提交
取消