Generic Web Service Throws Error Decoding WSDL

Im using the Kareo web service and the WSDL file is throwing an error message when parsing the WDSL. However many other tools I tried are able to process the file.

https://webservice.kareo.com/services/soap/2.1/KareoServices.svc?wsdl

Someone mentioned in another topic its possible to use the POST Rest API call as an alternative however they didn’t post sufficient details how to accomplish that.

Any ideas how to get around this problem?

Hi @scottrichardmcleod_yahoo.com,

Without looking to deep into the wsdl - one possible solution is to download the wsdl file locally and fix the duplicate.
And then reference the local file.

Else you can use the post node to send the xml format in the body. But here you have to check every servive of the soap manually and create the defined xml message

E. g. look into examples/tutorials on how to send soap requests manually with e.g. Postman and check the body format which is send.
(as you wrote it is working in other tools - maybe you can check there which bodies are send there as well)

But in general the needed xml structure is already in the wsdl - you just need to analyse the service you want to use :+1:
In my opinion the single wsdl files are often easier to read if you want to do it manually (while for your api it gets quite large)

https://webservice.kareo.com/services/soap/2.1/KareoServices.svc?singleWsdl

Finally a solution I often use with soap services… is to do a java wsimport and create the needed java classes for the soap service - and then use the java snippet nodes in knime with the created jar files.
(at least basic java knowledge is required here - but in most cases also not too hard :slight_smile: )
Instead of wsimport for public wsdl online generators might work as well like
https://easywsdl.com/

I would suggest to look into a generated jar e.g. through an online generator if you are confortable with a bit of java.
I think option 1 would be the easiest if you do not know java - but might not work due to other issues in the wsdl.
The generic web service node is really not to forgiving in the layout of the wsdl (where other tools overlook these discrepancy)
Option 2 (doing the post requests) might be the most time consuming in my option

1 Like

I think I’m pretty close here. I posted a simple workflow that hard codes the only request I need to run of all the services in the DSDL file - its a CREATEPATIENT. Now I can run this using Visual Studio and the XML works fine so I just have to get Knime to run it. I’ve been trying and get a generic HTML 500 error which does not help. Im not sure if what the URL I should be sending is. The WSDL file or the higher level service API.

I’m stumped. And I only have experience with REST - no SOAP in my background. So if have a little time I’d be incredibly appreciative of helping me get this to work. If you can make whatever changes are needed to to POST node so that it generates an “INVALID USERID/PASSWORD” error message back from the service, its working.

There are two different WSDL end points. Suppose to be the same. Looks like one just references the other as links. But they both throw the exact same error. The error is not actually real. Its a bug in the generic web services client where KNIME apparently does not recognize underscores in field names and therefor considers them to be a duplicate.

https://webservice.kareo.com/services/soap/2.1/KareoServices.svc?wsdl

https://webservice.kareo.com/services/soap/2.1/KareoServices.svc?singleWsdl
Create Patient Sample.knwf (8.9 KB)

1 Like

I was able to get this working. Three key things.

  1. URL was not the WSDL file but the endpoint only for the service. In my case I had to use KareoServices Service and not https://webservice.kareo.com/services/soap/2.1/KareoServices.svc?wsdl.
  2. Had to include the “SOAPAction” parameter in my header
  3. The SOAPAction had to include the entire path to the methodname. In other words not “CreatePatient” but rather “http://www.kareo.com/api/schemas/KareoServices/GetPatient”.
3 Likes

Hi @scottrichardmcleod_yahoo.com,

Thanks for sharing your solution, much appreciated.

Cheers,
Michael

Great that you got it to work :+1:
Yea - Soap is often way more complicated then a simple REST service :see_no_evil:

1 Like

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.