System.Net.WebException Удаленный сервер возвратил ошибку: NotFound с запросом POST 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.*********();

 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"
</invokegetresponsecallback>

Насколько мне известно, мой WMAppManifest имеет ID_CAP_NETWORKING, который, как я прочитал, может стать возможной причиной для проблем. Кроме этого, у меня нет идей...

1 ответ

The remote server returned an error: NotFound на телефоне означает любой The remote server returned an error: NotFound код состояния HTTP в ответе. Вы можете просмотреть его в отладчике.

В вашем случае сервер отправляет вам статус HTTP 400 "Bad Request". Причина проста, вы устанавливаете неверный ContentType. text/json следует заменить на application/json.

licensed under cc by-sa 3.0 with attribution.