Delphi 10.4 -- TNetHTTPClient使用示例

原文:https://www.cnblogs.com/wuxi15/p/12650896.html

function GetAccessToken(const client_id, client_secret: string;
  HTTP: TNetHTTPClient;out access_token,expires_in,error:String):Boolean;
var
 URL:String;
 cParam:TStringList;
 FJson:TJsonObject;
 S:string;
begin
  URL:='https://aip.baidubce.com/oauth/2.0/token';
  cParam:=TStringList.Create;
  cParam.Add('grant_type=client_credentials');
  cParam.Add('client_id='+client_id);
  cParam.Add('client_secret='+client_secret);
  try
  s:=HTTP.Post(URL,cParam).ContentAsString;
  FJson:=TJSONObject.ParseJSONValue(s) as TJSONObject;
  error:='';
  if FJson.Values['error']<>nil then
   begin
     if FJson.Values['error_description'].Value='unknown client id' then
       error:='API Key不正确';
     if FJson.Values['error_description'].Value='Client authentication failed' then
       error:='Secret Key不正确';
     if error='' then
       error:='未知错误';
       FJson.Free;
     Exit(false);
   end;
    access_token:=FJson.Values['access_token'].Value;
    expires_in:=FJson.Values['expires_in'].Value;
    Result:=True;
    FJson.Free;
  finally
    cParam.Clear;
    cParam.Free;
  end;
end;