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;
     
     
  • 相关阅读:
    [设计模式]之依赖倒置
    CSS的三种使用方式
    CSS的语法结构
    学习 jQueryMobile 第一个程序
    初识 GoogleMap
    程序员考试
    程序员考试
    CSS学习
    认识CSS
    开始忙一段时间
  • 原文地址:https://www.cnblogs.com/sdlz/p/14273879.html
Copyright © 2011-2022 走看看