zoukankan      html  css  js  c++  java
  • Delphi中IdHttp组件异常非200获取返回JSON数据

    参考原文:https://www.atozed.com/forums/thread-771.html?highlight=400+Bad+Request

    另外还有一篇文章说明也可参考 http://www.sumweb.net/archives/1666

    使用您显示的确切代码,我没有收到“ HTTP / 1.1 400 错误的 请求”响应。我收到“ HTTP / 1.1 400 ”(没有“错误 请求”)响应。但更重要的是,响应正文包含以下JSON文档:

    码:
    {"error":"invalid_grant","error_description":"The user name or password is incorrect."}


    您可以通过捕获引发的EIdHTTPProtocolException并读取其ErrorMessage属性来访问该JSON 

    码:
    try
     Result := lHTTP.Post(HttpAutenticazione+'/auth/signin', lParamList);
    except
     on E: EIdHTTPProtocolException do begin
       // use E.ErrorMessage as needed...
     end
    end;


    或者,您可以启用TIdHTTP的hoNoProtocolErrorExceptionhoWantProtocolErrorContent标志,然后Post()将不会引发EIdHTTPProtocolException,并且返回的字符串将为JSON:

    码:
    lHTTP.HTTPOptions := lHTTP.HTTPOptions + [hoNoProtocolErrorException, hoWantProtocolErrorContent];
    Response := lHTTP.Post(HttpAutenticazione+'/auth/signin', lParamList);
    if (lHTTP.ResponseCode div 100) <> 2 then
    begin
     // use Response as needed...
    end else
     Result := Response;
     
     
  • 相关阅读:
    IIS是如何处理ASP.NET请求的
    数据库访问性能优化
    通信交互总结
    数据库集群技术漫谈
    VS2010中出现无法嵌入互操作类型
    正则表达式-更新版
    IIS部署SSL证书后提示不可信的解决方案
    CSS水平居中和垂直居中解决方案
    jQuery get/post区别及contentType取值
    配置Tomcat使用https协议
  • 原文地址:https://www.cnblogs.com/sdlz/p/14273879.html
Copyright © 2011-2022 走看看