我正在尝试使用不同的API网站,因为我正在为网站构建自己的API,在bebo.com上通过API,他们有一个php cient,它传递了应用程序所有者拥有的密钥和秘密。然后你有一个客户端库,你可以调用一堆方法/函数,所有的方法都是这样的:
public function score_getHigh($uid='', $name='') {
return $this->execute('score.getHigh', array('member_id' => $uid, 'name' => $name));
}
你可以看到它们都只是传入一个函数的名称,并将params放入一个数组中并通过execute(METHOD-NAME,METHOD PARAMS)函数传递它。然后该函数运行这样的代码
//execute function
//flatten array
foreach ($params as $k => $v) {
if (is_array($v)) {
$params[$k] = implode(',', $v);
}
}
要列出要运行的所有函数和参数,然后使用CURL将其POST或GET到API页面,如果我自己在浏览器中访问该页面,这将是我在浏览器中返回的结果让curl发布它然后我查看网页浏览器的页面源它显示这个数组我是如何在浏览器中发布的,
Array
(
[error_code] => 102
[error_msg] => Session key invalid or no longer valid
[request_args] => Array
(
[0] => Array
(
[key] => v
[value] => 1.0
)
[1] => Array
(
[key] => api_key
[value] => Qnw1Moc22Y9m3XY5zUZohbxiwfkURaPJpN3m
)
[2] => Array
(
[key] => method
[value] => friends.get
)
[3] => Array
(
[key] => call_id
[value] => 1262417906.33
)
[4] => Array
(
[key] => sig
[value] => 18b8592f383a5f0abc332745284a0e99
)
)
)
最后这里的问题是,这是什么样的响应,它不是JSON,我不认为它是XML,这会被调用什么以及尝试用CURL获得此结果的脚本,怎么能将此处理成可以使用的东西?
答案 0 :(得分:1)
从您的PHP脚本中,您应该可以执行以下操作:
$foo = $bebo->score_getHigh(...);
echo $foo['error_code']; // Should output 102 in this case
您发布的响应类似于PHP的serialize
函数的输出。如果您使用Bebo的PHP客户端发出请求然后打印结果对象,那将是有意义的。 Bebo的服务实际上是在您提出请求时向您返回XML,如下面的示例所示。
$ curl http://apps.bebo.com/restserver.php?\
v=1.0&api_key=Qnw1Moc22Y9m3XY5zUZohbxiwfkURaPJpN3m\
&method=friends.get&call_id=1262417906.33&\
sig=18b8592f383a5f0abc332745284a0e99
<error_response>
<error_code>102</error_code>
<error_msg>Session key invalid or no longer valid</error_msg>
<request_args list="true">
<arg>
<key>v</key>
<value>1.0</value>
</arg>
<arg>
<key>api_key</key>
<value>Qnw1Moc22Y9m3XY5zUZohbxiwfkURaPJpN3m</value>
</arg>
<arg>
<key>method</key>
<value>friends.get</value>
</arg>
<arg>
<key>call_id</key>
<value>1262417906.33</value>
</arg>
<arg>
<key>sig</key>
<value>18b8592f383a5f0abc332745284a0e99</value>
</arg>
</request_args>
</error_response>