-1

yfrog.comに画像をアップロードする簡単なアプリを開発しています(これらの画像はtwitterアカウントに反映されます)。これが私のコードです。しかし、それは機能していません。サーバーから応答がありません。

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
QNetworkRequest request(QUrl("http://yfrog.com/api/uploadAndPost"));

QByteArray data;
QUrl params,params1;
QFile file("some image path");
QString boundary("-----abcde12345");
QString body = "\r\n--" + boundary + "\r\n";

params.addQueryItem("username",twitterusername);
params.addQueryItem("password",twitterpassword);
params.addQueryItem("message",some message...);
params.addQueryItem("key",mydeveloperkey);


data.append(body);
data.append(params.toString());
QByteArray ba;
ba=file.readAll();
QString body1(ba);
params1.addQueryItem("media",body1);
data.append(params1.toString());
data.append(body);


request.setRawHeader("Content-Type","multipart/form-data; boundary=-----abcde12345");
request.setHeader(QNetworkRequest::ContentLengthHe ader,data.size());

QNetworkReply *reply = manager->post(request,data);

reply->waitForReadyRead(-1);
qDebug() << "replay :"<<reply->readAll();

Wireshark から要求された TCP パケットを確認すると、「不正な形式のパケット」などのエラー メッセージが表示されます。

参考までに:http://code.google.com/p/imageshacka...GuploadAndPost

これに関して体の助けをお願いします。私はどこで間違っていますか?

4

1 に答える 1

0

QNetworkReply::waitForReadyRead には実装がないため、常に基本クラスの waitForReadyRead() (この場合は QIODevice) を参照します。基本クラスでは、waitForReadyRead が常に FALSE を返すことがわかります。

ドキュメントから、代わりに QNetworkReply で readRead() シグナルを使用し、スロットが呼び出されたときにデータを読み取る必要があります。

 QNetworkReply *reply = manager->get(request);
 connect(reply, SIGNAL(readyRead()), this, SLOT(slotReadyRead()));
于 2010-11-12T22:52:05.037 に答える