Я удаляю веб-службы, которые возвращают свои ошибки как json. Как я могу интерпретировать эти ошибки при использовании веб-клиента? Я хочу иметь возможность передавать их моим пользователям, чтобы у них не было ошибок, которые они получают.Как получить ошибки на основе json вместо стандартного .net
{ "успех": ложный, "ошибка": [
{
"ИмениСвойство": "Ориентир",
"причина": " 'Ссылка' не должна быть пустой."
}
{
"ИмениСвойства": "Ссылка",
"причина": " 'Ссылка' не должен быть пустым."
}, { "propertyName": "Key",
"reason": "'Key' должно быть от 10 до 15 символов. Вы ввели 3 символа."
}, { "propertyName": "Key",
"reason": "Ключ не начинается с нуля: 123." }], «предупреждение»: [], «информация»: []
Это как я взываю к API третьей стороны, но когда я ударил эту линию я получаю стандартную ошибку .net отбросьте мой вопрос, как я могу вместо этого получить значения вышеуказанного json назад
var httpResponse = (HttpWebResponse) httpWebRequest.GetResponse();
выстрел экрана, как я не могу загрузить
public void TransferToSlate(string json, string url)
{
var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
streamWriter.Write(json);
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
}
}
Edit 2 Я попытался следующие, и ее получили мне немного futher, но не к desps двух списков объектов представленных в ошибки
public void TransferToSlate(string json, string url)
{
try {
var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
streamWriter.Write(json);
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
}
}
catch (WebException ex){
var resp = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd();
dynamic obj = JsonConvert.DeserializeObject(resp);
var messageFromServer = obj.error.message;
}
Таким образом, я создал этот класс, но я не уверен, как d eserilize ошибок к нему
public class ErrorMessage
{
public string PropertyName { get; set; }
public string Reason { get; set; }
public override string ToString()
{
return string.IsNullOrWhiteSpace(PropertyName)
? Reason
: string.Format("{0} : {1}", PropertyName, Reason);
}
}
Редактировать 3
Я попытался следующие здесь, но он только что вернулся нуль, когда я не она должна быть заполнена с ошибками bleow из JSON в моем первом посте.
catch (WebException ex){
var resp = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd();
ErrorMessage error = JsonConvert.DeserializeObject<ErrorMessage>(resp);
var fieldinformation = error.PropertyName.ToString();
var messageFromServer = error.Reason.ToString();
}
Я просто tesing этого подхода, но это не получить мне информацию в пределах ошибок именно это я требовать, чтобы отправить обратно к моему клиенту –
, пожалуйста, ознакомьтесь с моим надзором, чтобы узнать, как я могу delserilize в моем списке объектов, пожалуйста. –