这可能很简单。
我正在尝试向我的一个朋友提出一个简单的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,我读到这可能是导致问题的原因。除此之外,我没有想法......
答案 0 :(得分:1)
The remote server returned an error: NotFound
表示响应中的任何失败的HTTP状态代码。您可以在调试器中查看它。
在您的情况下,服务器会向您发送HTTP状态400&#34;错误请求&#34;。原因很简单,您设置的ContentType不正确。 text/json
should be replaced与application/json
。