dynamics-business-central - 如何通过 Business Central 发送发布请求?
问题描述
我想在我的业务中心扩展中创建一个 PostRequest,它在我的 Web 服务中对我进行身份验证并返回一个令牌。我将请求正文中的用户名和密码发送到我的 Web 服务,并在正文中收到 JSON 格式的令牌。我想使用 HttpClient 创建发布请求。
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 吗?
解决方案
基本上一个字符串可以作为一个 url。取决于你想要什么。为您的 Web 服务调用进行设置是一种很好的做法,因此我支持 Babak。您可以设置一个表格来存储链接、凭据 - 无论如何。
-
- 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的代码,它或多或少是不言自明的。
推荐阅读
- c++ - 删除时堆异常
- kubernetes - K3s Ansible Playbook - 定义多个 ansible_users
- javascript - Node.js SSH连接:无法建立主机'XX.XX.XXX.XXX'的真实性。ECDSA 密钥指纹是
- python - 使用 Transformer 和 PL 的令牌分类仅预测一个令牌
- ibm-cloud - IBM Watson Assistant:Slack 日期选择器在聊天机器人中不起作用
- raspberry-pi3 - NeutralinoJs 在 Raspberry Pi 3 中不起作用(使用 32 位 Raspbian 操作系统)
- c# - 列表
> 到 C# 中的二维字符串数组 - python - 为什么单次断开连接会多次触发 stomp 监听器 on_disconnected 方法?
- c - 对由 gcc 翻译的汇编代码以用 C 实现 N 阶乘的怀疑
- c# - Discord bot 创建和删除临时频道