【问题标题】:google Measurement Protocol giving weird response谷歌测量协议给出奇怪的反应
【发布时间】:2019-05-13 10:53:49
【问题描述】:

我正在尝试使用 php7 进行设置,并为我的 rest API 设置 guzzle。当我使用 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."
  } ]
}

但如果我将它发送到产品 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

在 guzzle 中,我正在构建它

$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'
                                ]
                            ]);

【问题讨论】:

    标签: curl google-analytics php-7 guzzle measurement-protocol


    【解决方案1】:

    Response Codes

    如果收到 HTTP 请求,Measurement Protocol 将返回 2xx 状态代码。如果负载数据格式错误,或者负载中的数据不正确或未经 Google Analytics(分析)处理,Measurement Protocol 不会返回错误代码。

    如果您没有收到 2xx 状态代码,则不应重试该请求。相反,您应该停止并更正 HTTP 请求中的任何错误。

    无论如何,测量协议实际上并没有验证您的点击,您将得到的唯一响应是GIF89a▒▒▒▒▒,D 的 1x1 像素图像;

    所以实际上没有什么可以解决它应该的工作。唯一会向您发送正确响应的是您似乎正在使用的调试端点

    【讨论】:

    • 他们应该在他们的文档中提到这一点!!!。感谢您的回复,这让我很困惑。你认为我应该先调用调试,然后如果成功就将其发送出去?
    • 无论如何都要验证图像
    • 不,图像总是一样的,就像我说测量 api 着火了,忘记响应没有验证
    【解决方案2】:

    您需要将 User-Agent 标头添加到请求中。 进一步的解释在这里: https://groups.google.com/g/google-analytics-measurement-protocol/c/VVaoSU-2FB4?pli=1

    【讨论】:

      猜你喜欢
      • 2015-01-20
      • 2013-08-23
      • 1970-01-01
      • 2021-07-04
      • 2015-02-06
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      • 1970-01-01
      相关资源
      最近更新 更多