Windows phone 7 HttpWebRequest失败,Can';我不明白为什么

Windows phone 7 HttpWebRequest失败,Can';我不明白为什么,windows-phone-7,httpwebrequest,compact-framework,Windows Phone 7,Httpwebrequest,Compact Framework,我有一个WP7应用程序,我正在尝试重建一个HTTPWebRequest,我已经使用同步方法(粘贴在末尾)成功地在别处编写了它,但它在WP7中不起作用,我认为这是因为我对这些方法的异步版本做了一些错误 我相信这个问题源于这样一个事实,即Compact框架上的非工作代码只能发送bytearray[]——我没有发送json字符串的选项。如果我在有效的代码中发送bytearray,我也会在那里得到一个错误。有不同的选择吗 这是我的代码-这不起作用。在最后一个方法的第2行——“使用(var响应…)”抛出异

我有一个WP7应用程序,我正在尝试重建一个HTTPWebRequest,我已经使用同步方法(粘贴在末尾)成功地在别处编写了它,但它在WP7中不起作用,我认为这是因为我对这些方法的异步版本做了一些错误

我相信这个问题源于这样一个事实,即Compact框架上的非工作代码只能发送bytearray[]——我没有发送json字符串的选项。如果我在有效的代码中发送bytearray,我也会在那里得到一个错误。有不同的选择吗

这是我的代码-这不起作用。在最后一个方法的第2行——“使用(var响应…)”抛出异常:

此代码有效(相同请求的非紧凑框架版本):


谢谢你的帮助

看起来服务器正在响应“404未找到”。您请求的资源是否存在于服务器上?

您的JSON是否包含任何非7位ASCII字符,如您当前所做的:

byte[] byteArray = Encoding.UTF8.GetBytes(json);

postStream.Write(byteArray, 0, json.Length);
字节数可能与字符串中的字符数不同,这可能导致请求格式错误


使用诸如Fiddler之类的工具来验证从模拟器或手机通过线路到底发生了什么是值得的(有很多方法可以做到这一点)

嗯,我不知道为什么这个问题会消失。我喜欢@RowlandShaw的建议,但实际上我没有改变json中的任何内容。希望我能给出一个更好的解决方案

你好,Feroze,我可以确认它确实存在-如果我将json变量复制到Fiddler中,我会得到一个201创建的响应-因此我的HttpWebRequest和我对其异步方法的使用似乎有点问题。。。我想在我的原始帖子中包含这些信息。我会更新它。而且-该URL不是我正在调用的端点的完整URL-我无法将实际的URL放在论坛中,如果你是从这里得到404:)。你看到的异常类型是什么?它是System.Net.WebException-“远程服务器返回了一个错误:Not Found.”不是很有帮助。但事实上,我可以将这段代码在其他地方针对相同的API运行,如果我不进行ByteArray编码,它就可以工作,并且在我进行ByteArray编码时失败,这让我相信这就是问题所在。我只是不知道如何避开它…嗯。。。从来没有解决过这个问题,两周后我又回到了它,它突然开始工作了。我会设法弄清楚是什么改变了……谢谢罗兰,我会查出来的!
HttpWebRequest request = HttpWebRequest.Create("http://staging.cloudapp.net/api/users/") as HttpWebRequest;
        request.Method = "POST";
        request.ContentType = "text/json";
        using (var writer = new StreamWriter(request.GetRequestStream()))
        {
            User user = new user("Other", "Guy", "USWC");
            Formatting formatting = new Formatting();
            JsonSerializerSettings settings = new JsonSerializerSettings();
            settings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
            string json = JsonConvert.SerializeObject(user, formatting, settings);

            writer.Write(json);
        }

        var response = request.GetResponse() as HttpWebResponse;
        using (var reader = new StreamReader(response.GetResponseStream()))
        {
            var responseText = reader.ReadToEnd();
            return responseText;
        }
byte[] byteArray = Encoding.UTF8.GetBytes(json);

postStream.Write(byteArray, 0, json.Length);