如何获取HTTP响应正文,即使用BackgroundUploader下载

时间:2014-04-29 10:57:42

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

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

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

要处理Windows Phone的后台方案,想要运行后台上传器上传文件,一旦完成需要获取HTTP 200的正文,其中包含上传文件的链接

然而,直截了当地没有得到任何解决方案。

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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

在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.
                        }
                    }
            }
        }

希望这适合你。

虽然这是一个问题,但这可能有助于其他人。