System.Net.WebException远程服务器在Windows Phone 7中返回错误:NotFound with POST JSON request

时间:2014-01-17 02:05:08

标签: json windows-phone-7

这可能很简单。

我正在尝试向我的一个朋友提出一个简单的POST请求,并且REST测试人员确认它确实正在工作。这是我的代码:

private void sendJsonRequest()
    {
        var httpWebRequest = (HttpWebRequest) WebRequest.Create("http://boom.antomontani.com/api/v1/users.json");
        httpWebRequest.ContentType = "text/json";
        httpWebRequest.Method = "POST";

        httpWebRequest.BeginGetRequestStream(GetRequestStreamCallback, httpWebRequest);
    }

    private static void GetRequestStreamCallback(IAsyncResult asyncResult)
    {
        HttpWebRequest request = (HttpWebRequest) asyncResult.AsyncState;

        Stream postStream = request.EndGetRequestStream(asyncResult);

        string json = "{ \"phone\": \"" + phone + "\" }";
        byte[] byteArray = Encoding.UTF8.GetBytes(json);

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

        request.BeginGetResponse(GetResponseCallback, request);
    }

    private static void GetResponseCallback(IAsyncResult asyncResult)
    {
        HttpWebRequest request = (HttpWebRequest) asyncResult.AsyncState;

        HttpWebResponse response = (HttpWebResponse) request.EndGetResponse(asyncResult);

        Stream streamResponse = response.GetResponseStream();
        StreamReader reader = new StreamReader(streamResponse);

        string responseString = reader.ReadToEnd();

        streamResponse.Close();
        reader.Close();

        response.Close();

        result = responseString;
    }

调试时,EndGetResponse的执行中断,异常

[System.Net.WebException]   {"The remote server returned an error: NotFound."}  System.Net.WebException
     at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)\r\n   at System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)\r\n   at JSONBoom.PhoneNumber.GetResponseCallback(IAsyncResult asyncResult)\r\n   at System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClassa.<InvokeGetResponseCallback>b__8(Object state2)\r\n   at System.Threading.ThreadPool.WorkItem.WaitCallback_Context(Object state)\r\n   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)\r\n   at System.Threading.ThreadPool.WorkItem.doWork(Object o)\r\n   at System.Threading.Timer.ring()\r\n"

就我而言,我的WMAppManifest有ID_CAP_NETWORKING,我读到这可能是导致问题的原因。除此之外,我没有想法......

1 个答案:

答案 0 :(得分:1)

电话上的

The remote server returned an error: NotFound表示响应中的任何失败的HTTP状态代码。您可以在调试器中查看它。

在您的情况下,服务器会向您发送HTTP状态400&#34;错误请求&#34;。原因很简单,您设置的ContentType不正确。 text/json should be replacedapplication/json