0

過去数日間、API v2 を使用して Box アプリに取り組んでおり、OAuth2.

私のアプリはアクセス トークンを正常に取得し、アクセス トークンを使用して Box アカウントにアクセスすることもできますが、ファイルのアップロードは 299 の応答で失敗します。

アップロード リクエストを送信した後に Box から表示される HTML レスポンスには、「申し訳ありませんが、そのページにアクセスできません」というメッセージが含まれています。Box アカウントが一時的に利用できなくなっている可能性があります。問題の解決に取り組んでおり、すぐに復旧するはずです。」

すべての 2xx エラーは、リクエストが受け入れられたが、Box サーバーが処理できないことを意味します。以下は、ファイルを投稿するために使用したコードのスニペットです。

何が間違っている可能性があるかについてのヒントをいただければ幸いです

http://developers.box.com/get-started/#uploading-and-downloadingの指示に従ってい ます

    QUrl requrl = QUrl("https://www.box.com/api/2.0/files/content");

    std::string token = m_acc_token;

    QString hdrval = "Bearer "+QString(token.c_str());

    QNetworkRequest qnr(requrl);
    qnr.setRawHeader("Authorization",hdrval.toUtf8());  

    QString boundary;
    boundary = "---------7d935033608e2";

    QByteArray data;    
    data.append("file=@btest.txt");
    data.append(boundary);
    data.append("folder_id=0");
    data.append(boundary);


    qnr.setHeader(QNetworkRequest::ContentTypeHeader,"multipart/form-data; boundary=---------7d935033608e2");
    qnr.setHeader(QNetworkRequest::ContentLengthHeader,data.size());

    QNetworkReply* areply = NULL; 
    areply = m_networkManager->post(qnr,data);
4

2 に答える 2

1

あなたはそれを実装することができます

QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);
QHttpPart headerPart;
headerPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"parent_id\" \" "));
headerPart.setBody(QString(aParentFolderId).toLatin1());

QHttpPart textPartData;
textPartData.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; filename=\"filename\" \" "));
textPartData.setBodyDevice(&File); //file must be open. 
File.setParent(multiPart);
multiPart->append(headerPart);
multiPart->append(textPartData);
QNetworkRequest networkReq;
networkReq.setUrl(QUrl("https://upload.box.com/api/2.0/files/content"));
networkReq.setRawHeader("Authorization", "Bearer " + AccessToken.toLatin1());

networkReply = mNetworkAccessManager.post(networkReq, multiPart);
multiPart->setParent(networkReply);
于 2014-03-27T12:05:32.990 に答える