2013-07-24 111 views
1

我正在嘗試使用google的url shortener API(https://developers.google.com/url-shortener/v1/getting_started#shorten)創建一個使用url shortener的應用程序。問題是我得到一個不好的請求。 以下是錯誤: 錯誤:錯誤下載https://www.googleapis.com/urlshortener/v1/url - 服務器的回覆:錯誤的請求谷歌Qt http差請求

我做了什麼錯? 下面是代碼:

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); 
    } 
} 
+0

人? #shortcomment – ddacot

回答

1

你必須以JSON格式發送您的文章數據。

爲了使您的代碼的工作,取代

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

與此

QByteArray postData; 
postData.append("{\"longUrl\": \""+longurl+"\"}"); 
1
​​

應該是:

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

和:

特殊照顧發送JSON數據。 (你的頭文件是這麼說的)所以ypu必須將postData格式化爲json。 此外,您將不得不設置內容長度。

檢查this post

+0

謝謝,無論如何,我仍然得到同樣的錯誤。 – ddacot

+0

增加了另一個錯誤 – Trompa

+0

仍然沒有解決問題,但謝謝。 – ddacot