使用HMRC Tax Platform时RESTRequest返回错误

时间:2018-10-26 14:06:54

标签: delphi rest-client

我正在研究HMRC Tutorial /hello/user的“ 2.用OAuth 2.0授权代码交换访问令牌”。

我设法获得了授权代码,但是在运行以下代码时:

{$REGION '1. Get the the Authorisation Code'}
wv := Tfrm_OAuthWebForm.Create(self);
try
  wv.OnAfterRedirect := OAuth2Authenticator1_Hello_User_Redirect;
  wv.ShowModalWithURL(LURL);
finally
  wv.Release;
end;
{$ENDREGION '1. Get the the Authorisation Code'}

1.HM税收与海关。有权代表您与HMRC进行互动。单击继续。
2.HM税收和海关。登录。用户名和密码。登录。
3.单击“授予访问权限”。
4.在OAuth2Authenticator1_Hello_User_Redirect Event上的代码中发布了授权代码。
5.显示我的重定向页面。
6.关闭Tfrm_OAuthWebForm

已执行以下代码:

RESTClient1.Authenticator := OAuth2Authenticator1_Hello_User;
RESTClient1.BaseURL := 'https://test-api.service.hmrc.gov.uk/oauth/token';
RESTRequest1.Method := TRESTRequestMethod.rmGET;
RESTRequest1.Params.AddItem('grant_type', 'authorization_code', TRESTRequestParameterKind.pkGETorPOST);
RESTRequest1.Params.AddItem('client_id', eHello_User_Client_ID.Text, TRESTRequestParameterKind.pkGETorPOST);
RESTRequest1.Params.AddItem('client_secret', eHello_User_Client_Secret.Text, TRESTRequestParameterKind.pkGETorPOST);
RESTRequest1.Params.AddItem('redirect_uri', eHello_User_Redirect.Text, TRESTRequestParameterKind.pkGETorPOST);
RESTRequest1.Params.AddItem('authorization_code', eHello_User_Authorization_Code.Text, TRESTRequestParameterKind.pkGETorPOST);
RESTRequest1.Execute;

调用RESTRequest1.Execute时引发异常。

procedure TfrmMain.RESTRequest1HTTPProtocolError(Sender: TCustomRESTRequest);
begin
// show error
  Add_To_Memo(Sender.Response.StatusText, False{Clear_Memo});
  Add_To_Memo(Sender.Response.Content, False{Clear_Memo});
  // Sender.Response.Content, = <!--[if lt IE 9]><html class="no-js lte-ie8"
end;

Sender.Response.StatusText

  

未找到

Sender.Response.Content

  

HMRC税务平台-找不到页面-404   HMRC Page not Found 404

HMRC说

  

如果由于您的应用程序出现客户端错误而未能成功,则在400到499之间的范围内

我已经检查并重新检查了该应用程序,但是在传递授权代码以获取访问和刷新令牌时,可以看到使代码混乱的原因。

使用相同的OAuth2Authenticator I:
1.右键单击OAuth2Authenticator。
2.选择配置。
3.按授权。
4.输入用户名和密码。
5.单击“授予访问权限”。
6.我得到了没有错误的访问令牌和刷新令牌。

有什么主意我的代码中缺少的内容吗?

希望如此。
TIA

0 个答案:

没有答案