0

我最近开始使用来自https://www.mashape.com/的 API ,我相信我已经获得了我需要的数据,但我不太确定如何使用它。它返回(我相信)一个我尝试将类型转换为数组的对象,但我仍然没有成功提取我需要的数据。该对象看起来像:

 Unirest\HttpResponse Object
(
    [code:Unirest\HttpResponse:private] => 200
[raw_body:Unirest\HttpResponse:private] => {
"_": {
    "APP_ID": "server_tracked"
},
"success": true,
"requestTime": "2013-08-21T21:02:59-07:00",
"shard": "North_America:YjNmMjE4YmVhZjgxN2M0ZGI0ZTU1YzQ0MWZiMzQ5MGJkMjFhMGRmOA",
"data": {
    "accountId": 37774341,
    "summonerId": 23638303,
    "name": "Naughtlok",
    "icon": 550,
    "internalName": "naughtlok",
    "level": 30
}
}
[body:Unirest\HttpResponse:private] => stdClass Object
    (
        [_] => stdClass Object
            (
                [APP_ID] => server_tracked
            )

        [success] => 1
        [requestTime] => 2013-08-21T21:02:59-07:00
        [shard] => North_America:YjNmMjE4YmVhZjgxN2M0ZGI0ZTU1YzQ0MWZiMzQ5MGJkMjFhMGRmOA
        [data] => stdClass Object
            (
                [accountId] => 37774341
                [summonerId] => 23638303
                [name] => Naughtlok
                [icon] => 550
                [internalName] => naughtlok
                [level] => 30
            )

    )

[headers:Unirest\HttpResponse:private] => Array
    (
        [content-type] => application/json; charset=utf-8
        [date] => Thu, 22 Aug 2013 04:02:59 GMT
        [server] => Apache-Coyote/1.1
        [x-api-calls-remaining] => -1
        [X-Mashape-Proxy-Response] => false
        [X-Mashape-Version] => 3.1.1
        [transfer-encoding] => chunked
        [Connection] => keep-alive
    )

)

关于我可以从“数据”中获得例如“级别”的任何指针?

4

3 回答 3

1

Mashape 发回一个响应对象,而不是一个数组。要访问对象的某些部分,您需要使用 php 指向对象键 - 这是unirest.io上的相关部分:

响应参考

在收到响应时,Unirest 以对象的形式返回结果,该对象应始终具有与响应详细信息有关的每种语言的相同键。

'code'- HTTP 响应状态代码(示例 200
'headers' - HTTP 响应标头
'body'- 适用时解析的响应主体,例如 JSON 响应被解析为对象/关联数组。
'raw_body'- 未解析的响应正文

因此,如果您正在做类似print_r($response);给我们这个的事情,请echo $response -> raw_body;改为这样做,然后将其解析为 JSON(或获取已解析的“正文”键)。

于 2013-08-23T07:28:19.413 回答
0

使用 print_r($response); 打印对象并查看响应是什么,例如:

<?php
require_once 'lib/Unirest.php';
// These code snippets use an open-source library. http://unirest.io/php
$response = Unirest::get("Your_URL",

//echo $response;
print_r($response); 
于 2015-01-02T08:06:03.533 回答
0

Unirest 2.0的发布有许多改进,包括设置自定义 JSON 解码标志的能力

这使您可以更好地控制响应正文类型解析方法(json_decode)

免责声明:我是 unirest-php 的作者,我在 Mashape 工作。

于 2015-01-24T11:18:26.627 回答