У меня сейчас 2 проблемы. Я пытаюсь отправить GetRequest на свой веб-сервис. Это делается с помощью метода SendNotify (phonenumber: text; template: text). Когда я вызываю метод через действие, я получаю следующее сообщение об ошибке: Неправильное использование имени заголовка. Убедитесь, что заголовки запроса используются с HttpRequestMessage, заголовки ответов с HttpResponseMessage и заголовки содержимого с объектами HttpContent. Когда я отладки, программа останавливается на следующей строке: ContentHeaders.Add ( «Авторизация», «Знаменосец eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI2dsadaXdrZUZTTWpNcnlBc2s1IiwiZXhwIjoxNTk1NDA3NDgzLCJpYXQiOjE1OTQzNjgyNTR9.1tAsf-x2FEvhDMyB4dsvgVKfZMLwAHcr_OLRA8RBeiY»); Токен в настоящее время жестко закодирован, но его следует удалить из списка настройки службы. Может ли кто-нибудь сказать мне, что я делаю неправильно?
codeunit 2020803 "Notify SMS Interface" implements SendNotifyInterface
{
procedure CheckInputData(NotifyEntry: Record "Notify Entry")
begin
NotifyEntry.Get();
end;
procedure SendNotify(phonenumber: text; template: text)
var
client: HttpClient;
RequestMessage: HttpRequestMessage;
RequestHeaders: HttpHeaders;
ResponseMessage: HttpResponseMessage;
NotifyServiceSetup: Record "Notify Service Setup";
JsonText: Text;
IsSuccessful: Boolean;
SendSMSURL: text;
begin
NotifyServiceSetup.Get();
SendSMSURL := NotifyServiceSetup."Service URL" + '/contacts/contacts/sms/' + 'sagos/' +
phonenumber + '/' + template;
JsonText := BuildJsonText();
InitHttpRequestContent(RequestMessage, JsonText);
InitHttpRequestMessage(RequestMessage, SendSMSURL, 'GET');
IsSuccessful := client.Send(RequestMessage, ResponseMessage);
if not IsSuccessful then
Error('Authentication failed!');
if not ResponseMessage.IsSuccessStatusCode then begin
Error('request was not successfully');
exit;
end;
end;
local procedure InitHttpRequestContent(var RequestMessage: HttpRequestMessage; JsonText: Text)
var
ContentHeaders: HttpHeaders;
NotifyServiceSetup: Record "Notify Service Setup WMR";
bearerToken: Text[250];
token: Text[250];
begin
token := NotifyServiceSetup.GetToken(NotifyServiceSetup."Authentication Token Key");
bearerToken := 'Bearer ' + token;
NotifyServiceSetup.Get();
RequestMessage.Content().Clear();
RequestMessage.Content().WriteFrom(JsonText);
RequestMessage.Content().GetHeaders(ContentHeaders);
ContentHeaders.Clear();
ContentHeaders.Add('Content-Type', 'application/json');
ContentHeaders.Add('Authorization', 'Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI2dsadaXdrZUZTTWpNcnlBc2s1IiwiZXhwIjoxNTk1NDA3NDgzLCJpYXQiOjE1OTQzNjgyNTR9.1tAsf-x2FEvhDMyB4dsvgVKfZMLwAHcr_OLRA8RBeiY');
end;
local procedure InitHttpRequestMessage(var RequestMessage: HttpRequestMessage; ServiceURL: Text; Method: Text)
var
RequestHeaders: HttpHeaders;
NotifyServiceSetup: Record "Notify Service Setup WMR";
token: Text[250];
bearerToken: Text[250];
begin
token := NotifyServiceSetup.GetToken(NotifyServiceSetup."Authentication Token Key");
bearerToken := 'Bearer ' + token;
RequestMessage.GetHeaders(RequestHeaders);
RequestHeaders.Clear();
RequestHeaders.Add('Accept', 'application/json');
RequestHeaders.Add('Authorization', 'Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI2dXdrZUZTTWpNcnlBc2s1IiwiZXhwIjoxNTk1NDA3NDgzLCJpYXQiOjE1OTQzNjgyNTR9.1tAsf-x2FEvhDMyB4dsvgVKfZMLwAHcr_OLRA8RBeiY');
RequestMessage.Method(Method);
RequestMessage.SetRequestUri(ServiceURL);
end;
local procedure BuildJsonText() ContentText: Text
var
ContentJson: JsonObject;
begin
ContentJson.WriteTo(ContentText);
end;
}
Вторая проблема, с которой я столкнулся, - это проверка данных в методе CheckInputData (NotifyEntry: Record «Notify Entry»). В записи для уведомлений есть поле под названием «Контактный номер», в котором содержится вся информация о клиенте. Я хочу попросить в методе предоставить номер телефона и приветствие. К сожалению, я не знаю, как я вышел из контакта №. Могу запросить данные. У кого-нибудь есть чаевые?
ОБНОВЛЕНИЕ 1
codeunit 2020808 Test
{
procedure sendNotify(phonenumber: text; template: text)
var
NotifyServiceSetup: Record "Notify Service Setup WMR";
IsSuccessful: Boolean;
client: HttpClient;
content: HttpContent;
contentHeaders: HttpHeaders;
request: HttpRequestMessage;
response: HttpResponseMessage;
txtResponse: InStream;
Url: Text;
token: Text[250];
begin
NotifyServiceSetup.Get();
token := NotifyServiceSetup.GetToken(NotifyServiceSetup."Authentication Token Key");
content.GetHeaders(contentHeaders);
contentHeaders.Clear();
contentHeaders.Add('Content-Type', 'application/json');
request.GetHeaders(contentHeaders);
contentHeaders.Add('Authorization', StrSubstNo('Bearer %1', token));
request.Content := content;
Url := NotifyServiceSetup."Service URL" + '/contacts/contacts/sms/' + 'Tegos/' + phonenumber + '/' + template;
request.SetRequestUri(Url);
request.Method := 'GET';
client.Send(request, response);
response.Content().ReadAs(txtResponse);
end;[![enter image description here][1]][1]