我的问题主要是这样的: 我有一个API的输出,返回一个带有任何消息的名为“error”的元素的json。当我试图反序列化我的对象并且服务器返回错误时,我得到了这个json而不是我的json对象(产品,订单......)。
这是发生错误的代码:
try
{
using (var response = (HttpWebResponse)requisicao.GetResponse()) // **here happens the exception**
{
using (var stream = new StreamReader(response.GetResponseStream()))
retorno = JsonConvert.DeserializeObject<TModelo>(stream.ReadToEnd());
}
}
所以...我想得到这个消息错误,但我无法处理(反序列化)它,因为它让我得到一个例外。 如果我可以反序列化对象,我可能会收到错误消息,因为代表我的对象的实体继承了错误对象(下面这个)
public class Erro
{
[JsonProperty("error")]
string MensagemErro { get; set; }
}
提前致谢。
答案 0 :(得分:0)
如果您在收到回复时遇到错误;
(HttpWebResponse)requisicao.GetResponse()
这意味着服务器没有向您返回正确的消息。因此,没有反序列化的响应消息,唯一的选择是在catch块中处理错误。
它看起来像;
try
{
using (var response = (HttpWebResponse)requisicao.GetResponse()) // **here happens the exception**
{
using (var stream = new StreamReader(response.GetResponseStream()))
retorno = JsonConvert.DeserializeObject<TModelo>(stream.ReadToEnd());
}
}
catch (WebException e)
{
WebResponse response = e.Response;
using (StreamReader reader =
new StreamReader(response.GetResponseStream()))
{
string text = reader.ReadToEnd();//Content of error message
}
}