首页 > 解决方案 > 如何通过 Business Central 发送发布请求?

问题描述

我想在我的业务中心扩展中创建一个 PostRequest,它在我的 Web 服务中对我进行身份验证并返回一个令牌。我将请求正文中的用户名和密码发送到我的 Web 服务,并在正文中收到 JSON 格式的令牌。我想使用 HttpClient 创建发布请求。

我使用以下链接作为模板:https ://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/methods-auto/httpcontent/httpcontent-data-type

    procedure sendPostRequest(uri: Text) 
        var
        client: HttpClient;
        content: HttpContent;
        contentHeaders: HttpHeaders;
        response: HttpResponseMessage;
        request: HttpRequestMessage;

    begin
        content.GetHeaders(contentHeaders);
        contentHeaders.Clear();
        contentHeaders.Add('Content-Type', 'application/json');

        request.Content:= content;

        request.SetRequestUri(uri);
        request.Method := 'POST';
    end;
    procedure SetURLsToDefault(var MessagingServiceSetup: Record "Messaging Service Setup WMR")
    begin
       MessagingServiceSetup."Service URL" := '202.212.127:8800';
    end;

我有几个问题:

1) 我的 API 网关的基本 url 是 202.212.127:8800。为了能够验证自己,我必须访问 202.212.127:8800/authenticate。有没有可以创建网址的方法?

2)如何在内容中获取我的用户名和密码?

3) 我如何获得令牌,我可以将其保存在现场吗?

有人可以告诉我如何启动并运行 PostRequest 吗?

标签: dynamics-business-central

解决方案


  1. 基本上一个字符串可以作为一个 url。取决于你想要什么。为您的 Web 服务调用进行设置是一种很好的做法,因此我支持 Babak。您可以设置一个表格来存储链接、凭据 - 无论如何。

    1. 4) 我建议使用 Waldos Rest App 进行网络服务调用。你可以在这里下载源代码:https ://github.com/waldo1001/waldo.restapp

它封装了调用,还具有用于 json 处理的辅助函数。使用"REST Helper"代码单元。您可以将呼叫分解为:

local procedure DoCallWebservice(URI: Text; User: Text; Pass: Text; var Token: Text);
var
    RESTHelper: Codeunit "REST Helper WLD";
begin
    RRESTHelper.Initialize('GET', URI);
    RESTHelper.SetContentType('application/json');
    RESTHelper.AddBody('{"user":"USERNAME","pass":"PASSWORD"}');
    if RESTHelper.Send() then
      Token := RESTHelper.GetResponseContentAsText();
end;

显然,您需要根据需要解析响应(JSONHelper)。看看codeunit的代码,它或多或少是不言自明的。


推荐阅读