【问题标题】:How to get HTTP response body i.e. download using BackgroundUploader如何获取 HTTP 响应正文,即使用 BackgroundUploader 下载
【发布时间】:2014-04-29 10:57:41
【问题描述】:

我需要使用 Windows Phone 8.1 将文件上传到不受我控制的服务器。

文件上传完成后,服务器在HTTP的200 OK响应正文中发送上传文件的链接。

要处理 Windows Phone 的后台场景,想要运行 Background Uploader 来上传文件,完成后需要获取包含上传文件链接的 HTTP 200 OK 正文

但是以直接的方式进行,没有得到任何解决方案。

如果有人有办法完成这项工作,会有所帮助

【问题讨论】:

    标签: http windows-phone-8 windows-runtime download


    【解决方案1】:

    如果您在响应中有一些正文,那么您可以尝试这样的事情:

    var request = new BackgroundTransferRequest(targetUri)
    {
        DownloadLocation = new Uri(downloadTo, UriKind.Relative),
        UploadLocation = new Uri(uploadFrom, UriKind.Relative),
        Method = "POST"
    };
    

    在这里,您的响应将被写入在 DownloadLocation 路径中创建的文件中。

    另外,在 WP8.1 中,我认为他们直接支持在后台上传器中访问响应。你可以试试看:

    ResponseInformation response = upload.GetResponseInformation();
                foreach (KeyValuePair<string, string> kvp in response.Headers)
                {
                    Debug.WriteLine("Header: {0}, Value: {1}", kvp.Key, kvp.Value);
                }
    

    上传在哪里:

            BackgroundUploader uploader = new BackgroundUploader();
            UploadOperation upload = await uploader.CreateUploadAsync(uri, parts);
    

    【讨论】:

      【解决方案2】:

      在 Windows Phone Runtime (WP8.1 RT XAML) 中使用BackgroundUploader 时,您必须附加一个进度回调函数,该函数在后台调用。

      在这个函数中,接收到的响应可以这样处理:

      private void UploadProgress(UploadOperation upload)
              {
                  BackgroundUploadProgress progress = upload.Progress;
      
                  if (progress.HasResponseChanged)
                  {
                      // We've received new response headers & body from the server.
                      using (var inputStream = upload.GetResultStreamAt(0))
                          {
                              using (StreamReader tr = new StreamReader(inputStream.AsStreamForRead()))
                              {
                                  string respBody = tr.ReadToEnd();
                                  //Handle this response string.
                              }
                          }
                  }
              }
      

      希望这对你有用。

      虽然这是一个有年头的问题,但这可能对其他人有帮助。

      【讨论】:

        猜你喜欢
        • 2018-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-07
        • 2021-07-20
        • 1970-01-01
        相关资源
        最近更新 更多