2

我试图用我的 windows phone 在网络服务器上发出请求,但我不工作。

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

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);

我知道 client.UploadValues 在 windows phone 上不可用。所以我在我的 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); 

我使用提琴手,我得到了这个 图片来自提琴手

谁能帮我

提前致谢

4

2 回答 2

1
  1. 您应该在将电子邮件和密码字段添加到帖子正文字符串之前对它们进行 URLEncode。
  2. 您应该添加一个Content-Type带有值的请求标头application/x-www-form-urlencoded

您可以使用 Fiddler 的 Compare Sessions 功能来比较工作请求和非工作请求,并调整非工作请求以与工作请求完全匹配。

于 2013-06-07T15:17:09.583 回答
0

好的,我找到了解决方案

我必须检查所有响应标头。所以我看到接受编码处于“身份”。我将其更改为“*”。

这是解释它如何工作的链接http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

就我而言,响应是 gzip。我使用 SharpGis 作为网络客户端。这是 nuget 路径https://nuget.org/packages/SharpGIS.GZipWebClient 使用 SharpGIS,您不再需要设置标题

于 2013-06-10T15:35:02.003 回答