【发布时间】:2019-04-04 20:01:07
【问题描述】:
我尝试了下面的答案,但我得到的只是一个空字符串。
WebException how to get whole response with a body?
我已经测试过通过邮递员到达端点,并且我得到了我期望的 json 响应(错误响应)。但是当我尝试在 .net 中点击该端点时,响应似乎不包含 JSON。上述问题的答案结果为空字符串。
catch (WebException ex)
{
var resp = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd();
dynamic obj = JsonConvert.DeserializeObject(resp);
var messageFromServer = obj.error.message;
return messageFromServer;
}
当我尝试只返回 ReadToEnd() 字符串时,它是空的。只是 ””。
但如前所述,我正在访问的端点正确返回 JSON。
{
"Message" : "The number could not be found"
}
【问题讨论】:
-
你在 ex.Message 中有什么?
-
错误响应不在大多数情况下包含正文。在尝试阅读之前,您必须验证是否有任何内容要阅读。 401、403 或 500 不会包含实体。在尝试读取响应之前检查WebException.Status 属性
-
代码应该像这样工作。您确定您的测试中没有其他 HTTP 错误吗?这可能是“找不到号码”以外的另一个错误
-
@GrzesiekDanowski 它只是说“发生错误”
-
@Reno 是的。它说“发生错误”,这完全没有帮助。我需要来自服务器的特定错误。这是 api 服务器的标准流程。如果 Panagiotis 是正确的并且没有提供错误响应的正文,那么这令人沮丧和悲伤。 MS,别再试图把你的意见强加给开发者了。给我完整的回复...
标签: c# .net system.net.webexception