谷歌上的 Qt http 错误请求
Posted
技术标签:
【中文标题】谷歌上的 Qt http 错误请求【英文标题】:Qt http bad request on google 【发布时间】:2013-07-24 08:17:42 【问题描述】:我正在尝试使用谷歌的网址缩短器 API (https://developers.google.com/url-shortener/v1/getting_started#shorten) 创建一个网址缩短器应用程序。问题是我收到了一个错误的请求。 这是错误: 错误:下载 https://www.googleapis.com/urlshortener/v1/url 时出错 - 服务器回复:错误请求
我做错了什么? 这是代码:
void MainWindow::ppp(QString longurl)
QNetworkAccessManager* manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(replyFinished(QNetworkReply *)));
QUrl url = QUrl("https://www.googleapis.com/urlshortener/v1/url");
QNetworkRequest request(url);
request.setHeader(request.ContentTypeHeader,"application/json");
QByteArray postData;
postData.append("longUrl");
postData.append(longurl);
manager->post(request,postData);
void MainWindow::replyFinished(QNetworkReply *reply)
if(reply->error() != QNetworkReply::NoError)
ui->textBrowser->setText("Error: " + reply->errorString());
else
QByteArray responseData = reply->readAll();
QString qstr(responseData);
ui->textBrowser->setText(qstr);
【问题讨论】:
有人吗? #shortcomment 【参考方案1】:您必须以 json 格式发送您的帖子数据。
要使您的代码正常工作,请替换
QByteArray postData;
postData.append("longUrl");
postData.append(longurl);
有了这个
QByteArray postData;
postData.append("\"longUrl\": \""+longurl+"\"");
【讨论】:
【参考方案2】:request.setHeader(request.ContentTypeHeader,"Content-Type: application/json");
应该是:
request.setHeader(request.ContentTypeHeader,"application/json");
还有:
您正在发送 json 数据。 (你的标题是这样说的)所以你必须将 postData 格式化为 json。 此外,您必须设置内容长度。
查看this post
【讨论】:
再次编辑,检查一下。您必须将您的帖子数据格式化为 json。对不起 不要认为你可以。你必须得到完整的 json 响应并解析它以获得你想要的信息。检查qt-project.org/doc/qt-5.0/qtcore/json.html 用于qt5 / ***.com/questions/4169988/… 用于qt4以上是关于谷歌上的 Qt http 错误请求的主要内容,如果未能解决你的问题,请参考以下文章