1

我正在为 SoundCloud 开发一个应用程序,用 PHP 编写,我使用 php-soundcloud 库。

成功实例化 Services_Soundcloud 实例后,我可以进行如下调用:

echo $soundcloud->get('me');
echo $soudcloud->get('users/12345678');

但是,以下调用不起作用:

echo $soundcloud->get('resolve', array('url' => 'https://soundcloud.com/webfordreams'));

我得到的错误是:

Services_Soundcloud_Invalid_Http_Response_Code_Exception:请求的 URL 在 Services_Soundcloud->_request() 中以 HTTP 代码 302 响应(../php-soundcloud/Services/Soundcloud.php 的第 933 行)。

经过几个小时的调试,我决定寻求帮助,因为我真的不明白我做错了什么。

谁能帮助我并告诉我如何得到正确的回应?

4

2 回答 2

1

您得到的“HTTP/1.1 302”响应是根据api的适当响应。如果你检查完整的 php 异常,你会在响应正文中得到这个:

[httpBody:protected] => {"status":"302 -Found","location":"https://api.soundcloud.com/users/25071103"}

为了允许 CURL 跟随重定向,您需要在调用 soundcloud 的 get() 函数时传递 CURLOPT_FOLLOWLOCATION 选项。

$result = $scloud->get('resolve', array('url' => 'https://soundcloud.com/webfordreams'), array(CURLOPT_FOLLOWLOCATION => TRUE ));

虽然我不太确定语法,但你最终想要在 Soundcloud 的 _request() 函数中得到类似这样的东西:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

希望在这方面有更多经验的人会出现并为您提供正确的语法,而不是您必须修补 SoundCloud SDK 本身。

于 2013-06-21T06:51:45.620 回答
1

从 Francis.G 所说的开始你正在寻找的语法是:

$soundcloud->get('resolve', array('url' => 'https://soundcloud.com/webfordreams'), array(CURLOPT_FOLLOWLOCATION => true);

唯一的变化是 curl-ops 数组的get()定义作为第三个参数传递给函数。

于 2013-11-06T21:31:25.570 回答