HTTP API 请求 Brandwatch php
HTTP API Request for Brandwatch php
使用 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,我将收到一个致命错误:无法将 stdClass 类型的对象用作 [=27 中的数组=].php 第 31 行。
我能做什么?只看到数组的一个条目,我该如何解析它?
感谢您的帮助!
echo '<pre>'.print_r($array, true).'</pre>';
的回应
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] =>
)
)
)
如果您真的从请求中获取了 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
使用 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,我将收到一个致命错误:无法将 stdClass 类型的对象用作 [=27 中的数组=].php 第 31 行。
我能做什么?只看到数组的一个条目,我该如何解析它? 感谢您的帮助!
echo '<pre>'.print_r($array, true).'</pre>';
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] =>
)
)
)
如果您真的从请求中获取了 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