我需要使用Windows Phone 8.1将文件上传到我无法控制的服务器。
文件上传完成后,服务器会在HTTP的200 OK响应正文中发送上传文件的链接。
要处理Windows Phone的后台方案,想要运行后台上传器上传文件,一旦完成需要获取HTTP 200的正文,其中包含上传文件的链接。
然而,直截了当地没有得到任何解决方案。
如果有人有办法完成这项工作,那将会很有帮助
答案 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.
}
}
}
}
希望这适合你。
虽然这是一个问题,但这可能有助于其他人。