如何使用Windows.Web.Http

时间:2018-04-03 19:16:25

标签: c# rest xaml uwp windows-10-universal

我正在使用Windows到UWP的应用程序。存在一个Web服务,当调用(GET)时,返回一个文件。使用浏览器触发Web服务时,它会在浏览器上成功下载文件。

在UWP应用上,我使用Windows.Web.Http来呼叫网络服务。我需要保存获取Web服务发送的文件并将其保存在设备上。

我目前有以下代码。不确定如何从Web服务获取结果并保存到文件。

public async Task DownloadFile(string WebServiceURL, string PathToSave)
{

    var myFilter = new Windows.Web.Http.Filters.HttpBaseProtocolFilter();
    myFilter.AllowUI = false;
    Windows.Web.Http.HttpClient client = new Windows.Web.Http.HttpClient(myFilter);
    Windows.Web.Http.HttpResponseMessage result = await client.GetAsync(new Uri(WebServiceURL));


    using (IInputStream inputStream = await result.Content.ReadAsInputStreamAsync())
    {
        //not sure if this is correct and if it is, how to save this to a file
    }

}

使用System.Web.Http,我可以使用以下方法轻松完成此操作:

Stream stream = result.Content.ReadAsStreamAsync().Result;
var fileStream = File.Create(PathToSave);
await stream.CopyToAsync(fileStream);
fileStream.Dispose();
stream.Dispose();

但是,使用Windows.Web.Http,我不知道如何才能做到这一点。请帮忙!

1 个答案:

答案 0 :(得分:2)

你正在寻找什么? 像这样?

var myFilter = new Windows.Web.Http.Filters.HttpBaseProtocolFilter();
            myFilter.AllowUI = false;
            Windows.Web.Http.HttpClient client = new Windows.Web.Http.HttpClient(myFilter);
            Windows.Web.Http.HttpResponseMessage result = await client.GetAsync(new Uri(WebServiceURL));

            //not sure if this is correct and if it is, how to save this to a file
            var file = await ApplicationData.Current.LocalFolder.CreateFileAsync("filename.tmp", CreationCollisionOption.GenerateUniqueName);
            using (var filestream = await file.OpenAsync(FileAccessMode.ReadWrite))
            {
                await result.Content.WriteToStreamAsync(filestream);
                await filestream.FlushAsync();

            }