Я делаю то, что обычно является простым сообщением http на Windows Phone 7 (код ниже). Когда я смотрю на fiddler во время поста, я вижу этот результат с сервера
HTTP / 1.1 500 Внутренняя ошибка сервера Cache-Control: частная
Тип контента: приложение / JSON; charset = utf-8 Сервер:
Microsoft-IIS / 7.5 jsonerror: true X-AspNet-Version: 2.0.50727
X-сервер: www03 X-Site: prod Дата: вторник, 16 августа 2011 г. 03:49:51 GMT
Длина контента: 220
{"Сообщение": "Приносим извинения ...}
Когда я помещаю попытку перехватить пост асинхронной записи, я не могу найти ничего, кроме
{System.Net.WebException: удаленный сервер возвратил ошибку:
Не обнаружена. ---> System.Net.WebException: удаленный сервер возвратил
ошибка: NotFoun ...
У меня такой вопрос: как я могу получить реальное сообщение (показанное в fiddler) из этого исключения? или как мне вообще избежать этого исключения и вернуть json, чтобы я мог разобрать его на предмет фактического сообщения об ошибке?
Заранее спасибо
public void Checkout(ResponseAndCookies responseAndCookies)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost/checkout");
request.ContentType = "application/json";
request.CookieContainer = responseAndCookies.CookieContainer;
request.Method = "POST";
request.AllowAutoRedirect = false;
request.Accept = "application/json";
request.BeginGetRequestStream(new AsyncCallback(GetRequest), request);
}
private void GetRequest(IAsyncResult asyncResult)
{
var json = "{\"valid\":true}";
byte[] byteArray = Encoding.UTF8.GetBytes(json);
HttpWebRequest request = (HttpWebRequest) asyncResult.AsyncState;
Stream newStream = request.EndGetRequestStream(asyncResult);
newStream.Write(byteArray, 0, byteArray.Length);
newStream.Close();
request.BeginGetResponse(new AsyncCallback(GetResponse), request);
}
private void GetResponse(IAsyncResult asyncResult)
{
var response = ReadResponse(asyncResult); //if I try catch this I get the exception listed above :(
}
private ResponseAndCookies ReadResponse(IAsyncResult result)
{
Stream dataStream = null;
HttpWebRequest request = (HttpWebRequest) result.AsyncState;
HttpWebResponse response = request.EndGetResponse(result) as HttpWebResponse;
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
var responseAndCookies = new ResponseAndCookies
{CookieContainer = request.CookieContainer, Markup = responseFromServer};
return responseAndCookies;
}