1

我正在尝试使用谷歌的 url 缩短器 api ( https://developers.google.com/url-shortener/v1/getting_started#shorten ) 创建一个 url 缩短器应用程序。问题是我收到了一个错误的请求。这是错误: 错误:下载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);
    }
}
4

2 回答 2

1
request.setHeader(request.ContentTypeHeader,"Content-Type: application/json");

应该:

request.setHeader(request.ContentTypeHeader,"application/json");

和:

您正在发送 json 数据。(你的标题是这样说的)所以你必须将 postData 格式化为 json。此外,您必须设置内容长度。

检查这个帖子

于 2013-07-24T08:21:04.683 回答
1

您必须以 json 格式发送您的帖子数据。

要使您的代码正常工作,请替换

QByteArray postData;
postData.append("longUrl");
postData.append(longurl);

有了这个

QByteArray postData;
postData.append("{\"longUrl\": \""+longurl+"\"}");
于 2013-07-24T09:27:05.507 回答