delphi7 idhttp get Http/1.1 401 unauthorized 解决方法

yct0605 2024-02-22 17:18:50

维护一个D7的老程序,现在需要连接http api 接口获取数据(需要鉴权),由于是D7老版本,资料比较少,网上也找了一些方法,但是都卡在访问鉴权了,提示没有权限,求大神给指导一下,谢谢!

下面是测试代码,运行报错:无权限

 

procedure TForm1.Button1Click(Sender: TObject);
var
  tmpHttp: TIdHTTP;
begin
  try
    tmpHttp := TIdHTTP.Create(nil);
    tmpHttp.ReadTimeout := 5000; //请求超时设置
    tmpHttp.HandleRedirects := True;
    tmpHttp.Request.ContentType := 'application/json';
    tmpHttp.Request.Accept := 'application/json';
    tmpHttp.ProtocolVersion := pv1_1;
    tmpHttp.HTTPOptions := tmpHttp.HTTPOptions + [hoKeepOrigProtocol];

    tmpHttp.Request.Username := 'admin';
    tmpHttp.Request.Password := 'admin';
    tmpHttp.Request.BasicAuthentication := False;

    memo1.Text:=tmpHttp.Get(edit1.text);
  finally
    tmpHttp.Free;
  end;
end;

 

...全文
270 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
原子星 02-24
  • 打赏
  • 举报
回复

主要是看API接口使用的是什么鉴权方式了,如果是标准的Basic模式应该是没问题的,看这个问题描述感觉大概率不是标准的basic模式。如果不是标准鉴权,可以考虑在server端对api做个封装,使用basic拿到用户名密码,再用实际api的鉴权方式去提交真正的请求,然后把结果返回给客户端。相当于是针对delphi客户端做了个api代理。

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧