rest - 如何在Rest命令Delphi中转换CURL

标签 rest delphi

如何转换 Rest 命令中的 CURL?

出了什么问题

curl -X GET --header“接受:application/json”--header“X-Authorization:承载“ token ””“http://console.agrolog.io:8080/api/auth/user”

德尔福代码:

  RESTClient1.BaseURL := 'http://console.agrolog.io:8080/api/';

  RESTRequest1.Method := TRESTRequestMethod.rmGET;
  RESTRequest1.Resource := 'auth/user';

  RESTRequest1.Params.Clear;
  with RESTRequest1.Params.AddItem do
    begin
        ContentType := ctAPPLICATION_JSON;
        name        := 'Authorization';
        Value       := 'X-Authorization: Bearer ' + '"'+Strtoken+'"' ;
        Kind        :=  pkHTTPHEADER;
    end;

  RESTRequest1.Execute;

错误是EHTTPProtocolException,消息为'HTTP/1.1 401'

最佳答案

您设置的 REST 参数完全错误。

参数的Name应该是'X-Authorization'而不是'Authorization'(为什么?'Authorization') code> 是标准化 header ),并且您需要从其 Value 中删除 X-Authorization: 前缀。您也不应该根本不设置其 ContentType

此外,您需要将 RESTRequest1.Accept 设置为 'application/json'

试试这个:

RESTClient1.BaseURL := 'http://console.agrolog.io:8080/api/';

RESTRequest1.Method := TRESTRequestMethod.rmGET;
RESTRequest1.Resource := 'auth/user';
RESTRequest1.Accept := 'application/json';

RESTRequest1.Params.Clear;
with RESTRequest1.Params.AddItem do
begin
  Name := 'X-Authorization'; // 'Authorization'
  Value := 'Bearer "'+Strtoken+'"';
  Kind := pkHTTPHEADER;
end;

RESTRequest1.Execute;

关于rest - 如何在Rest命令Delphi中转换CURL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65953312/

相关文章:

delphi - 如何在 iOS 模拟器 Delphi Seattle 上进行 HTTPS 调用

java - 公共(public)端点上的 Spring Boot REST API 401?

python - Django 休息框架保存缩略图

c# - 消除 RESTful 服务的歧义

c# - 我应该用 C# 还是 Delphi 开始我的新共享软件项目?

delphi - Coinitialize 尚未被调用错误消息

android - Phonegap 跨域 ajax 请求仅在 Android 上当 debuggable=false 时失败,当 debuggable=true 时不会

java - 使用 Spring Boot 处理 REST 中的自定义验证和异常

delphi - 如何在复合组件中发布子组件的属性?

delphi - 如何检测特定的 Delphi 版本?