C # System.Net.WebException Recuperando 404 personalizada mensagem
-
22-07-2019 - |
Pergunta
Eu estou trabalhando em um cliente para um webservice que retorna códigos de status padrão (404, 200 etc) assim uma mensagem JSON personalizado.
Eu não tenho sido capaz de encontrar uma propriedade do WebException que contém a mensagem personalizada.
Algumas ideias sobre como obter um porão da mensagem?
Solução
Uma solução simples:
O WebException tem a WebResponse real disponível na propriedade Response. A partir daqui é simplesmente uma questão de lidar com a resposta como por normal:
private static JsonParseException ProcessException(WebException webEx)
{
var stream = webEx.Response.GetResponseStream();
using (var memory = new MemoryStream())
{
var buffer = new byte[4096];
var read = 0;
do
{
read = stream.Read(buffer, 0, buffer.Length);
memory.Write(buffer, 0, read);
} while (read > 0);
memory.Position = 0;
int pageSize = (int)memory.Length;
byte[] bytes = new byte[pageSize];
memory.Read(bytes, 0, pageSize);
memory.Seek(0, SeekOrigin.Begin);
string data = new StreamReader(memory).ReadToEnd();
memory.Close();
DefaultMeta meta = JsonConvert.DeserializeObject<DefaultMeta>(data);
return new JsonParseException(meta.Meta, meta.Meta.Error, webEx);
}
}
Eu estou usando a biblioteca NewtonSoft JSON para deserialise a resposta JSON
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow