Soundcloud解决问题


Soundcloud resolve issue

我正在为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行).

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

谁能帮我,告诉我如何得到适当的回应?

从Francis。你要找的语法是:

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

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

根据api,您得到的"HTTP/1.1 302"响应是适当的响应。如果你检查完整的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本身。