Delphi XE10.2 Import WSDL error TRIDIUM / NIAGARA - delphi

I'm working on a solution to browse the database of Niagara database from a Delphi client application and I'm trying to find a way to access the database.
I appears oBix and SOAP is available. (I know abs. nothing about oBix!)
I'm completely new to this Niagara platform and to SOAP.
I'm trying to use SOAP and use Delphi WSDL import, but it fails with an error about invalid characters in line 23.
This is what I try to import.
https://obix.tridium.com/obix/wsdl
Does anyone have a clue on why it fails or what am I doing wrong?
I tried another import http://www.webservicex.net/WeatherForecast.asmx?WSDL - that works fine.

Related

Delphi SOAP WebService Catch Exception for logging

I have a Indy Server (TIdHTTPWebBrokerBridge) which serve a WebModule (TWebModule), the WebModule contains these 3 components:
HTTPSoapDispatcher1: THTTPSoapDispatcher;
HTTPSoapPascalInvoker1: THTTPSoapPascalInvoker;
WSDLHTMLPublish1: TWSDLHTMLPublish;
It's really a classical Delphi SOAP Server Application as generated by the template, and I added a generated SOAP Proxy from WSDL, and it works fine.
I like to log the error handled by the web server code. For example if the SOAP message is not correctly formatted. I tried to branch the following Events:
HTTPSoapPascalInvoker1.OnExceptionEvent
TIdHTTPWebBrokerBridge1.OnException
TIdHTTPWebBrokerBridge1.OnCommandError
But I can't get any of them to be triggered, even worst if I put a breakpoint inside them, it shows a cross which mean that this code may never be executed.
So, my question is how can I get a maximum of information about error generated by the webserver outside of my code ?
Thanks in advance,

Delphi 2010 Class TraCoreModule not found

When i run my application it tells me that "Class TraCoreModule not found". I tried to google witch class this is or where it comes from but no results.
Can anyone tell me what module this is or why i get this error please?
The application connects to a sql server database and updates a few fields.
It also uses ActiveX to send emails.
I am using Woll2Woll.
I wish i could provide more information but this is all i have.
I tried to locate the error in my code by printing debug messages in a memmo but this does not help.
So i figured out the issue. The TppReport was corrupted...

How to solve exception error when consuming Microsoft Sql Server Reporting Services (SSRS) 2005 from Delphi XE7

I am trying to create a sample Delphi XE7 desktop app that will connect to SSRS 2005 web service but every time I try to call LoadReport web method, the following error is shown:
This is what I have done so far:
Create a desktop app.
Import WSDL for ReportExecution2005 and ReportService2005.
Create a button that call the web service based on the code shown
here. The web service locations as well as report are hardcoded for
simplicity purposes.
This is the code snippet from the link:
HTExec := tHttpRio.Create(nil);
rsExec := GetReportExecutionServiceSoap(False, ExecURL, HTExec);
// Load the selected report.
LRParams.Report := 'ReportName';
LoadParamsResponse := rsExec.LoadReport(LRParams); //here it fails
Note: I have already created a .NET win form app (VS2010 and VS2013) that consumes this web service without any issues, thus I know the web service and report to render are working OK. Sadly our requirements is for a Delphi solution, My educated guess is that the WSDL importer generated code is not correct and somebody out there may have come across with this issue before and know how to solve it.
I did a quick search for "http://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices/LoadReport"
and found this.
If it applies to you as well, it may be the case you're calling the service on an incorrect URL, use the one with ReportExecution2005.asmxin it, not ReportService2005.asmx
(There's a lot more here)
To find out differences between the Delphi version and the working version, use a HTTP proxy (Fiddler2) to capture the SOAP HTTP traffic in both setups.
If you have no access to the working environment, use SoapUI to create SOAP requests.

SAP adapter: disasembler problem "Unexpected end of stream while looking for:..."

Use WCF-SAP binding in WCF-Custom adapter, ReceiveIDOCFormat is set to 'String', in the pipeline component, we wrap and call a flat file disassembler to disassemble the SAP request to XML and process it later. We also have a log compnent which will log the SAP raw message prior to disassembler (the string version) to database (streaming way using CForwardOnlyStream)
Here is the problem, during the UAT testing with SAP, we find occasionally the flat file disassembler is complaining 'Unexpected end of stream while looking for:....', when we inspect the SAP message sent over the wire, we find the SAP request only contains the header (EDI_DC40), with emty content after that. What makes me worry is , when we go into SAP, resubmit the failed message using transaction WE19, disassembler has no problem parsing it.
I am totally lost, can someone please sugguest how to troubleshoot this?
Thanks a million!!
I think probably I found the problem now, SAP guys added a field, what I used to do (which I think is right but it may be the flaw) is, I didn't regenerate the schema, instead, I just manually added the field in Visual Studio and set the field length based on IDOC description.
I regenerated the IDOC using the WCF wizard, it seems it is not as same as added a field in visual studio, I just deployed this schema and hope it will address the problem, I'll post my findings later if it worked

Typo in SOAP WebServExp.GenerateXMLSchema?

We've recently setup out own webservice using SOAP and it all works like a charm.
Because the service is only used from within our own applications, I usually don't allow for a WSDL to be generated.
Today i started some tests with SoapUI and needed a WSDL of our own service. So I enabled the Default action of the TWSDLHTMLPublish component and tried to get the WSDL exported. All I got was an access violaton in WebServExp.GenerateXMLSchema, line 1636:
if (ParentInfo = nil) and ((GetTypeData(ATypeInfo).ParentInfo)^ <> nil) then
Debugging this, reveiled that GetTypeData(ATypeInfo).ParentInforeturned a nil, so of course using ^ on nil raises an access violation.
After removing the carret i had no problems generating the WSDL.
So did I find myself a bug here or am I missing something?
BTW: We have created our own SOAP.bpl, containing all original Delphi soap sources, to correct it for a known problem with exception derived from TRemotableException
So did I find myself a bug here or am I missing something?
Yes, that's a bug. And Subversion reveals it's been like that for many years - for as long as we've been on Subversion:(. [I am not setup to access the previous Starteam repository anymore].
I'm making to a note to remedy and check in unit tests for this. Please feel free to file a QC if time allows. And I'd like to hear more about the issue with TRemotableException-derived types.
Cheers,
Bruneau

Resources