Curl 谷歌测量协议给出了奇怪的响应
我正在尝试使用php7和guzzle为我的restapi进行设置。当我使用cli将curl中的请求发送到调试url时,我得到了一个很好的json响应Curl 谷歌测量协议给出了奇怪的响应,curl,google-analytics,php-7,guzzle,measurement-protocol,Curl,Google Analytics,Php 7,Guzzle,Measurement Protocol,我正在尝试使用php7和guzzle为我的restapi进行设置。当我使用cli将curl中的请求发送到调试url时,我得到了一个很好的json响应 { "hitParsingResult": [ { "valid": true, "parserMessage": [ ], "hit": "/debug/collect?v=1\u0026t=pageview\u0026tid=U
{
"hitParsingResult": [ {
"valid": true,
"parserMessage": [ ],
"hit": "/debug/collect?v=1\u0026t=pageview\u0026tid=UA-1234567-1\u0026uid=UA-1234567-1\u0026dh=test.domain.com\u0026dp=/api/user/verify/flow"
} ],
"parserMessage": [ {
"messageType": "INFO",
"description": "Found 1 hit in the request."
} ]
}
但如果我把它发送到prod url,每次都会收到奇怪的响应
GIF89a▒▒▒▒▒,D;
有人知道如何解决这个问题吗
这是我在cli上运行的
curl -X POST -d 'v=1&t=pageview&tid=UA-xxxxxxxxx-1&uid=UA-xxxxxxxxx-1&dh=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=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'
]
]);
如果收到HTTP请求,测量协议将返回2xx状态代码。如果有效负载数据格式不正确,或者有效负载中的数据不正确或未经Google Analytics处理,则测量协议不会返回错误代码
如果未获得2xx状态代码,则不应重试该请求。相反,您应该停止并更正HTTP请求中的任何错误
测量协议实际上并不验证您的点击率,因为您将得到的唯一响应是一个1x1像素的图像,该图像为89A▒▒▒▒▒,D
因此,实际上没有什么可以解决它应该如何工作的问题。唯一能向您发送正确响应的是调试端点,您似乎正在使用该端点。您需要将用户代理头添加到请求中。 进一步解释如下:
他们应该在他们的文档中提到这一点!!!。谢谢你的回复,这让我很困惑。你认为我应该先调用调试,如果成功的话再发送它吗?有没有验证图像的方法?没有,图像总是一样的,就像我说的,测量api是fire,忘记响应没有验证