我正在尝试使用php7和guzzle设置其余的API。当我使用cli在curl中将请求发送到调试网址时,我得到了一个不错的json响应
{
"hitParsingResult": [ {
"valid": true,
"parserMessage": [ ],
"hit": "/debug/collect?v=1\u0026t=pageview\u0026tid=UA-101927425-1\u0026uid=UA-101927425-1\u0026dh=ccp-test.vodafone.com\u0026dp=/iwsapi/user/verify/flow"
} ],
"parserMessage": [ {
"messageType": "INFO",
"description": "Found 1 hit in the request."
} ]
}
但是如果我将其发送到产品url,我每次都会得到奇怪的响应
GIF89a▒▒▒▒▒,D;
有人知道如何解决吗?
这就是我在cli上运行的
curl -X POST -d 'v=1&t=pageview&tid=UA-xxxxxxxxx-1&uid=UA-xxxxxxxxx-1&dh=ccp-test.domain.com&dp=%2Fiwsapi%2Fuser%2Fverify%2Fflow' https://www.google-analytics.com/debug/collect
对于非调试模式,我只是删除调试
curl -X POST -d 'v=1&t=pageview&tid=UA-xxxxxxxxx-1&uid=UA-xxxxxxxxx-1&dh=ccp-test.domain.com&dp=%2Fiwsapi%2Fuser%2Fverify%2Fflow' https://www.google-analytics.com/collect
在枪口中,我像这样建造它
$promise = $guzzle->post("/debug/collect", [
'proxy' => [
'http' => 'http://proxy:8080',
'https' => 'http://proxy:8080',
],
'form_params'=>[
'v'=>1,
't'=>'pageview',
'tid'=>GOOGLE_ID,
'uid'=>$_SERVER['HTTP_CTVFNTUSERNAME'],
'dh'=>WWWHOST,
'dp'=>$_SERVER['REQUEST_URI'],
//'dt'=>'homepage'
]
]);
答案 0 :(得分:1)
如果接收到HTTP请求,则Measurement Protocol将返回2xx状态代码。如果有效载荷数据格式不正确,或者有效载荷中的数据不正确或未被Google Analytics(分析)处理,那么Measurement Protocol不会返回错误代码。
如果未获得2xx状态代码,则不应重试该请求。相反,您应该停止并更正HTTP请求中的所有错误。
无论如何,测量协议实际上并不会验证您的匹配,您唯一会收到的响应就是GIF89a▒▒▒▒▒,D
的1x1像素图像;
因此,实际上没有任何事情可以解决其应有的问题。唯一会向您发送正确响应的是您似乎正在使用的调试端点
答案 1 :(得分:0)
您需要将User-Agent标头添加到请求中。 进一步的解释在这里: https://groups.google.com/g/google-analytics-measurement-protocol/c/VVaoSU-2FB4?pli=1