gpt4 book ai didi

Android c2dm 302 Http错误

转载 作者:行者123 更新时间:2023-11-28 03:42:28 26 4
gpt4 key购买 nike

每次我想向我的手机发送推送通知时,我都会从 Google 服务器收到 302 移动错误。它说,它移动到 www.google.com。这似乎不正确。所以我有以下信息:

  • 我坐在代理后面,但我也在没有代理的情况下尝试过。没有效果。
  • CUrl 命令行方法工作正常
  • 从 Google 服务器接收授权 token 工作正常
  • 更改我要发送的身份验证 token 没有实际效果(更改最后 3-4 个字符)
  • 不发送注册id无效

这是发送推送通知的代码:

QString headerStr = QString("GoogleLogin auth=") + m_authCode;
qDebug(qPrintable(headerStr));

QUrl url;
url.addQueryItem("registration_id", m_pRegCode->text());
url.addQueryItem("collapse_key", "0");
url.addQueryItem("data.message", "data");
qDebug("%s", qPrintable(url.toString()));
qDebug("%s", qPrintable(QString(url.encodedQuery())));
QByteArray data;
data = url.encodedQuery();

QUrl header("https://android.apis.google.com/c2dm/send");
QNetworkRequest req(header);
req.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded;charset=UTF-8");
req.setHeader(QNetworkRequest::ContentLengthHeader, data.length());
req.setRawHeader(QByteArray("Authorization"), headerStr.toAscii());

qDebug("%s", qPrintable(req.url().toString()));
m_pPushRep = m_pManager->post(req, data);

我收到的答案是:

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.com">here</A>.
</BODY></HTML>

我做错了什么?

编辑:解决方案实际上非常简单:我的身份验证 ID 末尾有一个空格。这实际上导致了错误代码。因此,对于所有在遥远的 future 阅读本文的人:检查您的身份验证码!

最佳答案

我遇到了类似的问题。从 cURL 工作,但不是从 Qt 工作。但是,我不得不将 -k 标志与 cURL 一起使用,也就是忽略 ssl 错误。在我对 QNetworkReply* 执行简单的 ignoreSslErrors() 后,它对我来说工作得很好,这也可能对你有用。我现在有了这段代码来执行 api 调用。

QNetworkRequest request(QUrl("https://android.apis.google.com/c2dm/send"));
QUrl postData;
postData.addQueryItem("collapse_key","1");
postData.addQueryItem("registration_id",id);
postData.addQueryItem("data.message",message);
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded;charset=UTF-8");
request.setHeader(QNetworkRequest::ContentLengthHeader, postData.encodedQuery().length());
request.setRawHeader("Authorization","GoogleLogin auth=....");
network->post(request,postData.encodedQuery())->ignoreSslErrors();

这对我来说很好。

关于Android c2dm 302 Http错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8669839/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com