我正在尝试从以下网站获取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;
示例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上失败。
关于我在做什么错的任何想法吗?
答案 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;
运行程序,单击按钮,瞧!
我希望这对某人有帮助