【问题标题】:IDHTTP returning HTTP 1.1/500 - show error details [duplicate]IDHTTP 返回 HTTP 1.1/500 - 显示错误详细信息 [重复]
【发布时间】:2018-01-17 23:18:44
【问题描述】:

当使用 IDHTTP 发送带有 JSON 变量的 POST 命令时,有时服务器会返回以下异常:

HTTP/1.1 500 内部服务器错误

我知道这是服务器端错误,我的请求 JSON 数据可能有问题。

但是如果我使用 Chrome 运行相同的 POST 命令,浏览器将在页面内容中显示更详细的错误,而不是简单的 HTTP 500。有没有办法使用 IDHTTP 也接收这些详细信息?

这是我的代码示例:

idhttp1.Request.ContentType := 'application/json';
idhttp1.post(URL, JsonToSend); //this line will throw the exception

【问题讨论】:

  • 处理EIdHTTPProtocolException 异常。
  • @Victoria 请注意,如果启用了hoNoProtocolErrorException 标志,或者在请求的AIgnoreReplies 参数中传递500,则不会引发EIdHTTPProtocolException。在这种情况下,除非您启用 hoWantProtocolErrorContent 标志,否则正文数据将被丢弃。见New TIdHTTP flags and OnChunkReceived event

标签: delphi indy indy10


【解决方案1】:

我刚刚发现 IDHTTP 有一个 Response.RawHeaders 属性。因此,要阅读详细信息,请在发布后阅读此属性。

IDHTTP.Response.RawHeaders.Text;

【讨论】:

  • 这使您只能访问响应标头,而不是响应正文数据,这是浏览器将显示的内容。默认情况下,该数据仅存储在引发的 EIdHTTPProtocolException
猜你喜欢
  • 1970-01-01
  • 2019-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-10
  • 2019-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多