Soundcloud解决问题

时间:2013-01-16 17:57:13

标签: php api curl soundcloud

我正在为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以HTTP代码302响应。在Services_Soundcloud-> _request()(../ php-soundcloud / Services / Soundcloud.php的第933行)。

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

有人可以帮助我并告诉我如何得到正确的回应吗?

2 个答案:

答案 0 :(得分: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本身。

答案 1 :(得分:1)

领导Francis.G所说的语法:

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

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