【问题标题】:Windows Phone using accept-encoding gzip compression in webclientWindows Phone 在 webclient 中使用接受编码 gzip 压缩
【发布时间】:2013-08-22 10:42:23
【问题描述】:

我需要将数据发布到服务器,并从中获取压缩数据。

我正在使用 windows phone 7 sdk。

我读到可以使用 SharpGIS 或 Coding4Fun 工具包来完成。

他们使用 WebClient (AFAIK)。

谁能帮帮我?

这是我需要做的-

  1. 将数据(XML)发布到 url

  2. 获取xml字符串/流形式的压缩数据(服务器只支持GZip)

  3. 反序列化收到的xml数据

并且方法应该是可等待的。

【问题讨论】:

    标签: windows-phone-7 post gzip webclient


    【解决方案1】:

    当我不得不在 wp7 中这样做时,我

    1. 在我的解决方案中创建了一个可移植类库项目
    2. https://www.nuget.org/packages/Microsoft.Net.Http (Install-Package Microsoft.Net.Http) 处获取 HTTP 客户端库
    3. Nuget http://www.nuget.org/packages/Microsoft.Bcl.Async/(安装包 Microsoft.Bcl.Async)并添加到您的 PCL 和 UI 解决方案中

    在可移植类库中

    public class PostData
    {
        public async Task<T> TestMe<T>(XElement xml)
        {
            var client = new HttpClient(new HttpClientHandler
            {
                AutomaticDecompression = DecompressionMethods.GZip
                                         | DecompressionMethods.Deflate
            });
    
            var response = await client.PostAsync("https://requestUri", CreateStringContent(xml));
    
            var responseString = await response.RequestMessage.Content.ReadAsStringAsync();
            //var responseStream = await response.RequestMessage.Content.ReadAsStreamAsync();
            //var responseByte = await response.RequestMessage.Content.ReadAsByteArrayAsync();
    
            return JsonConvert.DeserializeObject<T>(responseString);
        }
    
        private HttpContent CreateStringContent(XElement xml)
        {
            return new StringContent(xml.ToString(), System.Text.Encoding.UTF8, "application/xml");
        }
    }
    

    【讨论】:

    • 链接nuget.org/packages/Microsoft.Net.Http说它只支持windows phone 7.5, 8 不支持windows phone 7/7.1 是否可以将它用于针对WP 7.1的项目
    • @user2653208 WP 7.1 和 7.5 是相同的操作系统。出于商业原因,7.1 刚刚更名为 7.5。而且您无需担心 WP 7.0,因为它已经完全过时了。 WP 7.0 设备甚至无法连接到市场。
    【解决方案2】:

    支持 C4F 工具包的 WebClient 和 HttpWebRequest。目前 WP 中没有 http 客户端库,HttpClient 不存在。

    【讨论】:

      【解决方案3】:

      我不使用 Windows 8,这意味着 Windows Phone SDK 仅在 VS 2010 上,不支持 Microsoft HttpClient。

      有一个由 MS 开发人员编写的 NuGet 包 Delay.GZipWebClient,添加了对它的简单支持。到目前为止,它就像一个魅力。

      http://blogs.msdn.com/b/delay/archive/2012/04/19/quot-if-i-have-seen-further-it-is-by-standing-on-the-shoulders-of-giants-quot-an-alternate-implementation-of-http-gzip-decompression-for-windows-phone.aspx

      【讨论】:

        猜你喜欢
        • 2015-07-21
        • 2013-12-15
        • 2014-08-24
        • 2021-11-30
        • 2012-09-04
        • 2018-02-27
        • 1970-01-01
        • 1970-01-01
        • 2011-06-01
        相关资源
        最近更新 更多