1

状況は次のとおりです-ファイル(JPEG画像)をHTTP POSTリクエストに添付して、Wi-Fi経由でローカルサーバーに送信し、サーバーが結果(単純なテキスト)を返すようにします。

Nokia N9 (Meego 1.2 Harmattan) の Qt アプリケーションでこれを行う際に直面した問題を次に示します。
リクエストが送信された後、サーバーによって処理が続行され、応答が返されます (サーバーでログを確認できます) 。サーバーからのデータがハンドセットに到達するまでに、大きな遅延 (約 1 分) があります。回答がいくつかの部分で返される場合 - 遅延は最初の部分の前にあり、他の部分は非常に速くなっています (最初の部分でもそうあるべきです)。

Nokia C6-01 の Symbian^3 (Symbian Anna) の同じアプリで使用している同じコードで、問題なく動作します。すべてのデータが数秒で返されます (同じサーバーと要求を使用して同じネットワークでテストされます)。. また、このアプリから同じサーバーに送信する GET リクエストがいくつかあり、それらもすべて正常に動作します。したがって、これが Meego の唯一の問題かもしれません。

切れ端:

void PostDownloader::sendPostJpgImage(QString url, QImage image) {
        if(mainReply)
        return;

    char boundary[] = "AyV04a234DsHeKHcvNds";

    image = image.convertToFormat(QImage::Format_RGB888);

    QByteArray body;
    QBuffer buffer(&body);
    buffer.open(QIODevice::WriteOnly);
    image.save(&buffer, "JPG");
    buffer.close();

    QByteArray b;
    b.append("--").append(boundary).append("\r\n");
    b.append("Content-Disposition: form-data; name=\"jpgfile\"; filename=\"camera\"\r\n");
    b.append("Content-Type: image/jpeg\r\n");
    b.append("\r\n");
    b.append(body);
    b.append("\r\n");
    b.append("--").append(boundary).append("--");

    QNetworkRequest req = QNetworkRequest(QUrl(url));
    req.setHeader(QNetworkRequest::ContentTypeHeader, QVariant(QString("multipart/form-data; boundary=")+boundary));
    req.setHeader(QNetworkRequest::ContentLengthHeader, QString::number(b.size()));
    req.setRawHeader("Connection", "Close");
    req.setRawHeader("Cache-Control", "no-cache");
    req.setRawHeader("Keep-Alive", "1");
    mainReply = manager->post(req, b); //POST

    connect(mainReply, SIGNAL(readyRead()), this, SLOT(dataReceived()));
    connect(mainReply, SIGNAL(finished()), this, SLOT(finished()));
}

したがって、遅延は dataReceived() スロットを呼び出す前です。これはどのように解決できますか?何をアドバイスできますか?

前もって感謝します。

4

0 に答える 0