I have now completed my first all-dotnet codeunit. The codeunit uses a dll file that I created from the web service WDSL. This makes the programming a lot easier.
This solution has a BLOB fields that stores both incoming and outgoing xml. When I use a proxy dll I don’t build a xml document and I never handle xml documents. Again dotnet has a solution. I use xml serializer from the system.xml object.
[code]LOCAL PROCEDURE SerializeToXMLStream@1100408008(VAR Object@1100408002 : DotNet "’mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089′.System.Object" RUNONCLIENT;VAR NavOutstr@1100408004 : OutStream);
VAR
xmlSerializer@1100408000 : DotNet "’System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089′.System.Xml.Serialization.XmlSerializer" RUNONCLIENT;
StreamWriter@1100408003 : DotNet "’mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089′.System.IO.StreamWriter" RUNONCLIENT;
File@1100408001 : DotNet "’mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089′.System.IO.File" RUNONCLIENT;
NavInstr@1100408005 : InStream;
BEGIN
IF ISNULL(Object) THEN EXIT;
StreamWriter := StreamWriter.StreamWriter(TempFileName);
xmlSerializer := xmlSerializer.XmlSerializer(Object.GetType);
xmlSerializer.Serialize(StreamWriter,Object);
StreamWriter.Close;
UPLOADINTOSTREAM(”,MagicPath,”,TempFileName,NavInstr);
COPYSTREAM(NavOutstr,NavInstr);
File.Delete(TempFileName);
END;[/code]
I can send the proxy object to this function and will get the xml into the BLOB field.
[code]CurrencyRates := StatementService.GetCurrencyRates(TypeRates,CREATEDATETIME(RatesDate,235959T));
WITH BankAccAction DO BEGIN
"Modified by User ID" := USERID;
"Modification Date and Time" := CURRENTDATETIME;
"Incoming Message".CREATEOUTSTREAM(OutStr);
SerializeToXMLStream(CurrencyRates,OutStr);
MODIFY;
COMMIT;
END;[/code]
This example is executed on the client since I am using certificates and web services security for the communication.
Hi.
I dont understand the example.
You call a webservice to get currency rates …
and store the “getting back”-XML in a Blob.
That’s all????
Or will field’s in BankAccAction filled????
// What is that fpor a webservice?
// What is the structire of BankAccAction?
If you look at the earlier post “https://dynamics.is/?p=1081” then you will see how I use the dll. What I am adding is the XML logging. The BankAccAction is a log file with BLOB fields for both outgoing and incoming XML.