在Windows手机上发布请求

时间:2013-06-07 15:14:07

标签: c# windows-phone-7 webclient

我尝试使用我的Windows手机在网络服务器上发出请求,但我无法工作。

我有这个代码可以在我的电脑上运行

var client = new WebClient
        {
            BaseAddress = "https://xxx.xxx-xxx.com/"
        };

        var values = new NameValueCollection
        {
            {"wrap_name", userName},
            {"wrap_password", password},
            {"wrap_scope", scope}
        };

        // WebClient takes care of URL Encoding
        var responseBytes = client.UploadValues("issue/wrap", "POST", values);

我知道windows.phone上没有client.UploadValues。所以我在我的wp

上制作了这段代码
            var email = "xxx@xxx.org";
            var password = "xxx";
            var data = "wrap_name=" + email + "&wrap_password=" + password + "&wrap_scope=http://xxx.com/";
            var url = "https://xxx.xxx-xxx.com/issue/wrap";

                            var wc = new WebClient { 
                //BaseAddress = "https://login.solar-inverter.com/"
            };
            var URI = new Uri(url);
            wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
            wc.UploadStringCompleted += new UploadStringCompletedEventHandler(wc__UploadStringCompleted);

            wc.UploadStringAsync(URI, "POST", data); 

我使用小提琴手,我得到了这个 Image from fiddler

任何人都可以帮助我

提前致谢

2 个答案:

答案 0 :(得分:1)

  1. 在将电子邮件和密码字段添加到帖子正文字符串之前,您应该对其进行URLEncode。
  2. 您应添加Content-Type请求标头,其值为application/x-www-form-urlencoded
  3. 您可以使用Fiddler的比较会话功能来比较工作和非工作请求,并调整非工作请求以完全匹配工作请求。

答案 1 :(得分:0)

好的,我找到了解决方案

我必须检查所有响应头。所以我看到接受编码是“身份”。我把它改为“*”。

以下是解释其工作原理的链接http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

在我的情况下,响应是在gzip中。我使用SharpGis作为webclient。这是nuget路径https://nuget.org/packages/SharpGIS.GZipWebClient 使用SharpGIS,您不再需要设置标题