在 Windows Phone 8 中使用 HttpClient 执行 POST 时出现内部服务器错误

Nii*_*yea 6 c# internal-server-error dotnet-httpclient windows-phone-8 asynchttpclient

我以这种方式将字符串发布到网络服务器:

private async Task makeRequest(string url, string postData)
    {
        HttpClient client = null;
        HttpResponseMessage response = null;
        try
        {
            client = new HttpClient();
            response = await client.PostAsync(url, new StringContent(postData));

            response.EnsureSuccessStatusCode();
            Debug.WriteLine(response.StatusCode + " " + response.ReasonPhrase);
        }
        catch (HttpRequestException e)
        {
            Debug.WriteLine(e.Message);
        }
    }
Run Code Online (Sandbox Code Playgroud)

response.EnsureSuccessStatusCode();抛出一个HttpRequestException. e.Message当我对异常进行处理时,它说: Response status code does not indicate success: 500 (Internal Server Error).

我做错了什么导致出现该错误?我该如何纠正它?

Geo*_*des 5

正如一位智者所说,这里最好的解决方案是 HTTP 中没有魔法。

下载Fiddler2,在模拟器上设置代理以连接到它。然后运行您的代码,将HttpWebRequest标头保存在某处,然后再次运行它HttpClient

仔细比较两个文件并修复需要修复的内容。请注意,即使是最小的差异也可能很重要。


Dar*_*ler 2

POSTing StringContent 会将内容类型设置为text/plain. 您可能会发现服务器不喜欢这样。尝试找出服务器期望的媒体类型并设置Headers.ContentType实例的StringContent