Consume external soap Webservice from SaaS Business Central

weneed
Member Posts: 82
Is there any way to do this?
All procedure are marked [Scope('OnPrem')]..
All procedure are marked [Scope('OnPrem')]..
0
Best Answer
-
Hello @weneed,
Yes, you can use something like this to send an XML Ffle to and SOAP WS and get the response:procedure Send(xmlDoc: XmlDocument; URLDest: Text; var ErrorCode: Text; var xmlDoc2: XmlDocument): Boolean var URL: Text; Client: HttpClient; Content: HttpContent; RequestMsg: HttpRequestMessage; ResponseMSg: HttpResponseMessage; RequestHeader: HttpHeaders; ContentHeader: HttpHeaders; ReqTxt: Text; ResTxt: Text; begin URL := URLDest; RequestHeader.Clear(); RequestMsg.GetHeaders(RequestHeader); RequestHeader.Add('Accept', 'application/xml'); // Add XML to content XmlDoc.WriteTo(ReqTxt); Content.WriteFrom(ReqTxt); ContentHeader.Clear(); Content.GetHeaders(ContentHeader); ContentHeader.Remove('Content-Type'); ContentHeader.Add('Content-Type', 'text/xml'); RequestMsg.Content(Content); RequestMsg.SetRequestUri(URL); RequestMsg.Method('POST'); if Client.Send(RequestMsg, ResponseMSg) then begin if ResponseMSg.IsSuccessStatusCode() then begin ResponseMSg.Content.ReadAs(ResTxt); if XmlDocument.ReadFrom(ResTxt, XMLDoc2) then begin ErrorCode := ''; exit(true); end else begin ErrorCode := ResTxt; exit(false); end; end else begin ErrorCode := ResponseMSg.ReasonPhrase(); exit(false); end; end else begin if ResponseMSg.Content.ReadAs(ResTxt) then ErrorCode := ResTxt else ErrorCode := ResponseMSg.ReasonPhrase; exit(false); end; end;
Regards
Thanks. There is a way to authenticate giving username and password?0
Answers
-
Hello @weneed,
Yes, you can use something like this to send an XML Ffle to and SOAP WS and get the response:procedure Send(xmlDoc: XmlDocument; URLDest: Text; var ErrorCode: Text; var xmlDoc2: XmlDocument): Boolean var URL: Text; Client: HttpClient; Content: HttpContent; RequestMsg: HttpRequestMessage; ResponseMSg: HttpResponseMessage; RequestHeader: HttpHeaders; ContentHeader: HttpHeaders; ReqTxt: Text; ResTxt: Text; begin URL := URLDest; RequestHeader.Clear(); RequestMsg.GetHeaders(RequestHeader); RequestHeader.Add('Accept', 'application/xml'); // Add XML to content XmlDoc.WriteTo(ReqTxt); Content.WriteFrom(ReqTxt); ContentHeader.Clear(); Content.GetHeaders(ContentHeader); ContentHeader.Remove('Content-Type'); ContentHeader.Add('Content-Type', 'text/xml'); RequestMsg.Content(Content); RequestMsg.SetRequestUri(URL); RequestMsg.Method('POST'); if Client.Send(RequestMsg, ResponseMSg) then begin if ResponseMSg.IsSuccessStatusCode() then begin ResponseMSg.Content.ReadAs(ResTxt); if XmlDocument.ReadFrom(ResTxt, XMLDoc2) then begin ErrorCode := ''; exit(true); end else begin ErrorCode := ResTxt; exit(false); end; end else begin ErrorCode := ResponseMSg.ReasonPhrase(); exit(false); end; end else begin if ResponseMSg.Content.ReadAs(ResTxt) then ErrorCode := ResTxt else ErrorCode := ResponseMSg.ReasonPhrase; exit(false); end; end;
Regards0 -
Hello @weneed,
Yes, you can use something like this to send an XML Ffle to and SOAP WS and get the response:procedure Send(xmlDoc: XmlDocument; URLDest: Text; var ErrorCode: Text; var xmlDoc2: XmlDocument): Boolean var URL: Text; Client: HttpClient; Content: HttpContent; RequestMsg: HttpRequestMessage; ResponseMSg: HttpResponseMessage; RequestHeader: HttpHeaders; ContentHeader: HttpHeaders; ReqTxt: Text; ResTxt: Text; begin URL := URLDest; RequestHeader.Clear(); RequestMsg.GetHeaders(RequestHeader); RequestHeader.Add('Accept', 'application/xml'); // Add XML to content XmlDoc.WriteTo(ReqTxt); Content.WriteFrom(ReqTxt); ContentHeader.Clear(); Content.GetHeaders(ContentHeader); ContentHeader.Remove('Content-Type'); ContentHeader.Add('Content-Type', 'text/xml'); RequestMsg.Content(Content); RequestMsg.SetRequestUri(URL); RequestMsg.Method('POST'); if Client.Send(RequestMsg, ResponseMSg) then begin if ResponseMSg.IsSuccessStatusCode() then begin ResponseMSg.Content.ReadAs(ResTxt); if XmlDocument.ReadFrom(ResTxt, XMLDoc2) then begin ErrorCode := ''; exit(true); end else begin ErrorCode := ResTxt; exit(false); end; end else begin ErrorCode := ResponseMSg.ReasonPhrase(); exit(false); end; end else begin if ResponseMSg.Content.ReadAs(ResTxt) then ErrorCode := ResTxt else ErrorCode := ResponseMSg.ReasonPhrase; exit(false); end; end;
Regards
Thanks. There is a way to authenticate giving username and password?0
Categories
- All Categories
- 73 General
- 73 Announcements
- 66.6K Microsoft Dynamics NAV
- 18.7K NAV Three Tier
- 38.4K NAV/Navision Classic Client
- 3.6K Navision Attain
- 2.4K Navision Financials
- 116 Navision DOS
- 851 Navision e-Commerce
- 1K NAV Tips & Tricks
- 772 NAV Dutch speaking only
- 617 NAV Courses, Exams & Certification
- 2K Microsoft Dynamics-Other
- 1.5K Dynamics AX
- 320 Dynamics CRM
- 111 Dynamics GP
- 10 Dynamics SL
- 1.5K Other
- 990 SQL General
- 383 SQL Performance
- 34 SQL Tips & Tricks
- 35 Design Patterns (General & Best Practices)
- 1 Architectural Patterns
- 10 Design Patterns
- 5 Implementation Patterns
- 53 3rd Party Products, Services & Events
- 1.6K General
- 1.1K General Chat
- 1.6K Website
- 83 Testing
- 1.2K Download section
- 23 How Tos section
- 252 Feedback
- 12 NAV TechDays 2013 Sessions
- 13 NAV TechDays 2012 Sessions