德尔福HMRC test-api.service.hmrc.gov.uk/hello/world

时间:2018-10-05 11:39:29

标签: json rest http delphi

我正在尝试从以下网站获取HMRC开发人员HUB教程:

https://developer.service.hmrc.gov.uk/api-documentation/docs/tutorials

我尝试了两种“ Hello World”的方法,但是一直在获得:

{"code":"ACCEPT_HEADER_INVALID","message":"The accept header is missing or invalid"}

示例1 REST客户端:

procedure TForm1.btnTest_REST_ClientClick(Sender: TObject);
var
  jValue: TJSONValue;
begin
  RESTClient1.BaseURL := cbHMRC_Test_URLs.Text;
  RESTRequest1.Execute;

  jValue := RESTResponse1.JSONValue;
  MemoContent.Text:= jValue.ToString;
end;

With a RESTRequest header of:-

示例2 TdHTTP:

procedure TForm1.btnTest_HTTPClick(Sender: TObject);
var
  get_url: string;
  resp: TMemoryStream;
begin
  get_url := 'https://test-api.service.hmrc.gov.uk/hello/world';
  resp := TMemoryStream.Create;
  try
    IdHttp1.Request.CustomHeaders.AddValue('Accept', 'application/vnd.hmrc.1.0+json');
    IdHTTP1.Get(get_url, resp);

    resp.Position := 0; // <-- add this!!
    MemoContent.Lines.LoadFromStream(resp);
  finally
    resp.Free;
  end;
end;

两者都建立了连接,但是在Header上失败。

关于我在做什么错的任何想法吗?

2 个答案:

答案 0 :(得分:0)

我建议使用REST组件。我已经大量使用了它们,并且它们工作得很好。

在REST组件方面,您只是缺少“请求接受”值:

RESTRequest1.Accept := 'application/vnd.hmrc.1.0+json';

我在您的世界资源中测试了您的示例,并收到:

{"message":"Hello World"}

看起来像在工作。

答案 1 :(得分:0)

对于那些像我一样如何在Delphi中实现初始HMRC教程的人,请尝试以下方法。

创建一个新的应用程序。我选择了“多设备/空白应用程序”选项。

在主窗体上,添加以下组件:-

TRESTClient TREST请求 TREST响应 TMemo TButton

将System.JSON单元添加到uses子句。

按如下所示设置Button1Click过程:-

procedure TForm1.Button1Click(Sender: TObject);
var
  jValue: TJSONValue;


begin

  RESTClient1.BaseURL := 'https://test-api.service.hmrc.gov.uk/hello/world';
  RESTRequest1.Accept := 'application/vnd.hmrc.1.0+json';
  RESTRequest1.Execute;

  jValue := RESTResponse1.JSONValue;
  Memo1.Text:= jValue.ToString;
end;

运行程序,单击按钮,瞧!

我希望这对某人有帮助