【问题标题】:HTTP API Request for Brandwatch phpBrandwatch php 的 HTTP API 请求
【发布时间】:2015-08-28 14:43:06
【问题描述】:

通过 API 请求,在 JSOn 中获取服务器响应,就像这样在一个字符串中:

{"resultsTotal":3,"resultsPage":-1,"resultsPageSize":-1,"results":[{"id":1998425622,"name":"Regionale Mentions_Branche","type":"search string","creationDate":"2015-08-21T15:13:58.226+0000","lastModificationDate":"2015-08-21T15:13:58.226+0000","lastModifiedUsername":"mueller@cybay.de","lockedQuery":false,"lockedByUsername":null},{"id":1998422533,"name":"HTP_Sponsoring","type":"search string","creationDate":"2015-08-18T08:53:38.136+0000","lastModificationDate":"2015-08-18T08:53:38.136+0000","lastModifiedUsername":"mueller@cybay.de","lockedQuery":false,"lockedByUsername":null},{"id":1998422529,"name":"HTP_Brand Mentions","type":"search string","creationDate":"2015-08-18T08:41:32.699+0000","lastModificationDate":"2015-08-18T14:42:19.977+0000","lastModifiedUsername":"mueller@cybay.de","lockedQuery":false,"lockedByUsername":null}]}

所以我使用 json_decode 来获取一个数组。

现在我想解析数组,因为我只需要 "id":xxxxxxxx 和 "name" 我的代码是:

$webservice = 'http://newapi.brandwatch.com/projects/';
$kundenId = $_POST["kunden"];
$key = "?access_token=XXXXXXXXX";
$onlySdate = $_POST["startdate"];
$onlyEdate = $_POST["enddate"];
$startdate = "&startDate=".$onlySdate ;
$enddate = "?endDate=" .$onlyEdate ;
$url = $webservice . $kundenId . "/queries/summary".$key;

$domainRequest = $url;
//header("Location:$domainRequest");
$data = array();

$options = array(
    'http' => array(
        'header' => "Content-type: application/x-www-form-urlencoded\r\n" .
                                'Authorization: Basic ' . BASIC_AUTH,
        'method' => 'GET',
        'content' => http_build_query($data)
    )
);

$context = stream_context_create($options);
$result = file_get_contents($domainRequest, false, $context);

$array = json_decode($result, true);

//echo count ($result);
//echo "<br>";
print_r ($array);

如果我只想接收数组的一个条目,我在json_decode ($result); 中没有响应或没有 true,我将收到一个致命错误:无法在 /data/kunden/cylab/ 中使用 stdClass 类型的对象作为数组BH/produktion/web/htdocs_final/brandwatch/brandwatch.php 在第 31 行。

我能做什么?只查看数组的一个条目,我该如何解析它? 感谢您的帮助!

【问题讨论】:

  • 你能把brandwatch.php第31行的代码贴出来吗?
  • 请发布echo '&lt;pre&gt;'.print_r($array, true).'&lt;/pre&gt;';的输出

标签: php arrays api httprequest


【解决方案1】:

如果你真的从请求中得到了那个 json 代码并且你用它来解码它

$array = json_decode($result, true);

您将获得一个与 json 字符串具有相同结构的(关联)数组(没有 true 值,您将获得对象,这就是您遇到致命错误的原因)。在这种情况下,您可以访问其字段,如下所示:

foreach ($array["results"] as $result) {
    echo "id=" . $result["id"] . ", name=" . $result["name"] . "\n";
}

产生输出:

id=1998425622, name=Regionale Mentions_Branche
id=1998422533, name=HTP_Sponsoring
id=1998422529, name=HTP_Brand Mentions

【讨论】:

    【解决方案2】:

    echo '&lt;pre&gt;'.print_r($array, true).'&lt;/pre&gt;';的回复

     stdClass Object
        (
            [resultsTotal] => 3
            [resultsPage] => -1
            [resultsPageSize] => -1
            [results] => Array
                (
                    [0] => stdClass Object
                        (
                            [id] => 1998425622
                            [name] => Regionale Mentions_Branche
                            [type] => search string
                            [creationDate] => 2015-08-21T15:13:58.226+0000
                            [lastModificationDate] => 2015-08-21T15:13:58.226+0000
                            [lastModifiedUsername] => mueller@cybay.de
                            [lockedQuery] => 
                            [lockedByUsername] => 
                        )
    
                    [1] => stdClass Object
                        (
                            [id] => 1998422533
                            [name] => HTP_Sponsoring
                            [type] => search string
                            [creationDate] => 2015-08-18T08:53:38.136+0000
                            [lastModificationDate] => 2015-08-18T08:53:38.136+0000
                            [lastModifiedUsername] => mueller@cybay.de
                            [lockedQuery] => 
                            [lockedByUsername] => 
                        )
    
                    [2] => stdClass Object
                        (
                            [id] => 1998422529
                            [name] => HTP_Brand Mentions
                            [type] => search string
                            [creationDate] => 2015-08-18T08:41:32.699+0000
                            [lastModificationDate] => 2015-08-18T14:42:19.977+0000
                            [lastModifiedUsername] => mueller@cybay.de
                            [lockedQuery] => 
                            [lockedByUsername] => 
                        )
    
                )
    
        )
    

    【讨论】:

      猜你喜欢
      • 2015-08-09
      • 1970-01-01
      • 2011-06-01
      • 2012-08-15
      • 2020-07-03
      • 2017-08-04
      • 2015-01-09
      • 2015-06-01
      • 1970-01-01
      相关资源
      最近更新 更多