Google Analytics — Отправить пакетный запрос POST из переполнения стека

Протоколы измерений документов дайте мне эти указания, чтобы отправить пакетный запрос:

POST /batch HTTP/1.1
Host: www.google-analytics.com

v=1&tid=UA-XXXXX-Y&cid=555&t=pageview&dp=%2Fhome
v=1&tid=UA-XXXXX-Y&cid=555&t=pageview&dp=%2Fabout
v=1&tid=UA-XXXXX-Y&cid=555&t=pageview&dp=%2Fcontact

Я немного запутался в том, как мне построить свой URL для этого?

Что я пробовал:

$guzzle = new \GuzzleHttp\Client();
$guzzle->request('POST','www.google-analytics.com/batch',[
'query' =>  "v=1&tid=UA-XXXXX-Y&cid=555&t=event
v=1&tid=UA-XXXXX-Y&cid=555&t=event
v=1&tid=UA-XXXXX-Y&cid=555&t=event
v=1&tid=UA-XXXXX-Y&cid=555&t=event
v=1&tid=UA-XXXXX-Y&cid=555&t=event"]);

Это не работает, должно быть 5 новых событий в га, но я получаю только 1 (первое).

Как я могу отправить пакетный запрос в протокол измерений?

0

Решение

Если вы используете GuzzleHttp, вы должны использовать body вместо query:

$guzzle = new \GuzzleHttp\Client();
$guzzle->request('POST','www.google-analytics.com/batch', [
'body' => implode("\n", array(
'v=1&tid=UA-XXXXX-Y&cid=555&t=event',
'v=1&tid=UA-XXXXX-Y&cid=555&t=event',
'v=1&tid=UA-XXXXX-Y&cid=555&t=event',
'v=1&tid=UA-XXXXX-Y&cid=555&t=event',
'v=1&tid=UA-XXXXX-Y&cid=555&t=event',
)]);
2

Другие решения

Может быть, URL-адреса должны быть в части данных, а не в части заголовка запроса?

Так что используйте второй пост параметр laracurl (из Laracurl README):

 $response = Laracurl::post($url, ['post' => $data]);

с :

 $data = join("\n",array(
"v=1&tid=UA-XXXXX-Y&cid=555&t=pageview&dp=%2Fhome",
"v=1&tid=UA-XXXXX-Y&cid=555&t=pageview&dp=%2Fabout",
"v=1&tid=UA-XXXXX-Y&cid=555&t=pageview&dp=%2Fcontact"));
1

Надеюсь помочь кому-нибудь: API управления аналитикой, версия 3

Создание новой цели

(PHP Google_Client, Google_Service_Analytics)

/*
Assuming there is a $goals array
*/

$client = new Google_Client();
$client->setAuthConfig($KEY_FILE_LOCATION);
$client->addScope([Google_Service_Analytics::ANALYTICS_READONLY,
Google_Service_Analytics::ANALYTICS_EDIT]);

$client->setDeveloperKey($API_KEY);
$client->setSubject($EMAIL);
$client->refreshToken($REFRESH_TOKEN);

$client->setUseBatch(true);
$analytics = new Google_Service_Analytics($client);
$batch = $analytics->createBatch();

foreach($goals as $goal){

$req1 = $analytics->management_goals->insert(XXXXXX, UA-XXXXXX-1, XXXXXX, $goal);
$batch->add($req1);
}

try {
$batchResponse = $batch->execute();
/* Handling Response */
foreach ($batchResponse as $key => $value) {

if(!($value instanceof Google_Service_Exception)){
echo $value->getId()."\n";
continue;
}
print_r($value->getErrors());

}
} catch (Google_Service_Exception $e) {
/*
handling exception
*/
}
0