curl - 谷歌测量协议给出奇怪的反应
问题描述
我正在尝试使用 php7 和 guzzle 为我的 rest API 进行设置。当我使用 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'
]
]);
解决方案
如果收到 HTTP 请求,Measurement Protocol 将返回 2xx 状态代码。如果有效负载数据格式不正确,或者有效负载中的数据不正确或未经 Google Analytics(分析)处理,Measurement Protocol 不会返回错误代码。
如果您没有获得 2xx 状态代码,则不应重试该请求。相反,您应该停止并更正 HTTP 请求中的任何错误。
无论如何,测量协议实际上并没有验证您的命中,您将得到的唯一响应是 1x1 像素图像GIF89a▒▒▒▒▒,D
;
所以真的没有什么可以解决它应该的工作。唯一会向您发送正确响应的是您似乎正在使用的调试端点
推荐阅读
- kubernetes-helm - 当我在 hele 的模板文件中传递参数时,值文件中的数据丢失
- c - 检查常量 TRUE 或 FALSE 是否需要很多操作时间?
- c++ - 我可以对以下代码中的几行进行解释吗?
- pandas - 我应该记录转换我的模型以进行线性回归分析吗
- azure-functions - Azure 函数 NCRONTAB:不要在星期六触发时间触发器
- c++ - FlatBuffers - 当使用 --grpc 时出现错误 No template named 'StreamedUnaryHandler' in namespace 'grpc::internal'
- performance - 如何提高 Hive TEZ 中的交叉连接性能?
- reactjs - 如何从另一个文件导入 React 组件(不带 React 应用程序)
- python - 如何在 pd.DataFrame.plot() 中设置标签的字体大小?(熊猫)
- java - Jboss-eap-6 到 Jboss-eap-7 迁移时的 ClassNotFoundException