Curl 谷歌测量协议给出了奇怪的响应

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

我正在尝试使用php7和guzzle为我的restapi进行设置。当我使用cli将curl中的请求发送到调试url时,我得到了一个很好的json响应

{
  "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,忘记响应没有验证