我正在为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行)。
经过几个小时的调试后,我决定寻求帮助,因为我真的不明白我做错了什么。
有人可以帮助我并告诉我如何得到正确的回应吗?
答案 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数组的定义。