3

私はメトロアプリに取り組んでいます。バックグラウンドアップローダーを使用してファイルをアップロードしましたが、アップロード後に応答値を取得する方法が質問です。私はこのようにコーディングしました:

          BackgroundUploader uploader = new BackgroundUploader();
          uploader.SetRequestHeader("Content-Disposition", "form-data");
          uploader.SetRequestHeader("name", "userfile");
          uploader.SetRequestHeader("filename", App.ViewModel.DeviceId + ".png");
          uploader.SetRequestHeader("Content-Type", "multipart/form-data");

          UploadOperation upload = uploader.CreateUpload(uri, file);
          await upload.StartAsync();
4

3 に答える 3

1
upload.StartAsync().Completed = UploadCompletedHandler;

...

void UploadCompletedHandler(IAsyncOperationWithProgress<TResult, TProgress> asyncInfo, 
  AsyncStatus asyncStatus)
{
  // get a response body from an asyncInfo using the asyncInfo.GetResults() method
}

次のリソースに従ってください。

  1. UploadOperation.StartAsync | startAsync メソッド (Windows)

  2. IAsyncOperationWithProgress インターフェイス (Windows)

  3. AsyncOperationWithProgressCompletedHandler デリゲート (Windows)

于 2013-03-08T10:52:42.433 に答える
0

ここ数日、同じものを探していましたが、運がありませんでした。最後に、これを行うことができないことを発見しました。応答の「ヘッダー」は取得できますが、BackgroundTransfer getResponseInformation() メソッドから応答の「本文」を取得する方法はありません。

現在、これは Windows API の制限です。彼らがすぐにそれを追加することを願っています.

http://msdn.microsoft.com/en-us/library/windows/apps/windows.networking.backgroundtransfer.responseinformation.aspx#properties

回避策は、応答にカスタム ヘッダーを追加することです。このためには、サーバー側のスクリプトを変更する必要があります。ただし、サーバー側のスクリプトを制御できない場合は、アプリとリモート サーバー間の通信を行うプロキシ スクリプトを使用します。私の場合、リモートサーバーと通信するプロキシスクリプトをphpで作成し、応答を取得した後、それをカスタムヘッダーキーに追加しています。

次に、完全なメソッドのアプリでこれを使用します。

function complete(e){
    var mykey = e.getResponseInformation().headers.lookup("mykey");
}

それが役立つことを願っています。

于 2013-03-22T16:10:49.340 に答える