【问题标题】:Qt http bad request on google谷歌上的 Qt http 错误请求
【发布时间】: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

标签: c++ api qt httprequest


【解决方案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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多