0

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

我正在使用 windows phone 7 sdk。

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

他们使用 WebClient (AFAIK)。

谁能帮我?

这是我需要做的-

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

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

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

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

4

3 回答 3

1

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

于 2013-09-02T18:31:42.583 回答
1

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

  1. 在我的解决方案中创建了一个可移植类库项目
  2. 在https://www.nuget.org/packages/Microsoft.Net.Http (Install-Package Microsoft.Net.Http) Nuget 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");
    }
}
于 2013-08-22T11:23:33.977 回答
0

我不使用 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

于 2013-12-21T22:51:00.863 回答