How can I find what services are offered in a WSDL file? - web-services

I am a SOAP/WebServices newbie, and have been given a WSDL file that has a bunch of web services that I can connect to.
What is the easiest way to parse this and show me what services are offered, and what the input and output parameters are that are required? I really don't want anything more than this, but for whatever reason I can't seem to google an answer.
The closest I've gotten is using wsdl2java from Apache Axis, however it creates a whole bunch of Java objects. What I really want is very basic, which is give me a list of all of the services available, and the input/output parameters.
Does such a thing exist or do I need to build this myself?

Without installing anything I suppose this link would work but it requires that your WSDL be web accessible...
http://www.validwsdl.com/
Other online parsers may be better. Personally I'd recommend installing Eclipse with the web services plugin or the demo version of SOAPSonar, but if you only need to peek at what a WSDL offers without having to dig through the XML, then the above link might be an acceptable option.

Related

How to use SOAP with Qlik

So I'm evaluating this tool called QLIK over BIRT which should be used to pull and represent data from a SOAP service.
In BIRT I basically just supply the WSDL and I'm done. If I want to do the same with QLIK they tell us in the tutorial to use an external tool to create the SOAP Request and then use it as POST in something they call "Web Connector", which I can't find anywhere in the UI.
Am I missing something here or is it basically not possible to use SOAP services with QLIK inside the tool?
Bonus points if you can tell me where this "Web Connector" is.
Also I find it pretty confusing that they offer a REST connection but no SOAP connection on the datasource selection page?
I did find a place to configure a SOAP service in a menu called "SalesForce" shich is as far as I understand some 3th party service. This all makes totally no sense to me.
There are a couple of options to do this as I understand it, however I've not worked with SOAP/WDSL myself.
Use the REST Connector which is included with Qlik Sense v2 but is also free for earlier versions of Qlik Sense and QlikView. This allows you to issue a POST command rather than a GET command. The request body would presumably be the XML.
Use the "General Web Connector" from "Qlik Web Connectors". This is an add-on that you have to subscribe to, so if the REST one works for you, there's probably not much reason to go for it. That said, the documentation for it is more useful with some worked examples. (The background here is that Qlik bought a company that made a tool called QVSource earlier this year - hence the overlap between these two approaches and why the documentation is still branded as QVSource)
Hope that helps, sorry I can't be more specific.

WSDL runtime validation with JAX-WS

We are developing an MDA platform that has support for Web Services. The user can provide a WSDL in runtime and we generate all the artifacts (service interface and implementation for the server, and consumer for the client) using JAX-WS internally.
We want to add validation on the WSDL document provided by the user. Right now the user has to validate that with an external tool like Oxygen, XMLSpy or a web tool, but we want to add that as a part of our system. A nice-to-have feature would be schema validation aswell, including the embedded schemas of the WSDLs.
In JAX-WS (RI) there is support for schema validation in runtime (using the #SchemaValidation annotation) but we haven't found any support for WSDL validation.
We've tried to integrate Eclipse's WSDL validator but it doesn't seem to work for us.
Is there any way of doing this with JAX-WS?
If not, is there any other validation framework that we can integrate?
Thanks
There is a bit of confusion in your question that I need to clarify first.
You seem to want the ability to validate the WSDL (syntax + WS-I) and XSDs, either embedded or referenced externally by the WSDL. On the other hand you bring in #SchemaValidation, which is actually used to validate instance documents.
In a traditional development approach, one might say you want at least the ability to validate design-time artifacts (WSDL+XSDs).
For this scenario then, I would recommend the following:
WSDL: for WS-I compliance testing, please take a look at the test tools section of the WS-I site. It is not clear how the licensing they have with their test tooling would work with yours, but at least it should give you an idea for what to look if it doesn't work for you.
UPDATE: Additional WSDL validation resources:
- Eclipse based, how to use outside Eclipse.
XSDs: if you really need separate validation for XSD files, things may get tricky for a production quality product; WSDL4J is not much help here, and I believe XSOM is the way to go for this kind of job. You have to extract content from the types section as one or more XSD files (could be more than one XSD file, take a look at some examples, Microsoft's SharePoint WSDLs come to my mind as a good test case), assign a base uri for each extracted XSD that matches the WSDLs location, then use XSOM to validate those.
Since you're generating the client, you're most likely not concerned with validating, say of the HTTP headers (SOAP 1.1/HTTP, SOAPAction, if it matches the WSDL operation definition). If you end up developing an interest in that as well, which I call runtime validation, then I would recommend a different layout in your approach (i.e. I would not rely on #SchemaValidation but rather do it through a transparent, and generic, proxy service).

How should I compensate for a bad WSDL?

I've come across several examples of SOAP-based web services where automated tooling fails to build a client that works.
Investigating these examples leads me to believe that the WSDL the service uses to describe itself doesn't quite match the service that's being provided. Maybe a wrong type somewhere, a different data structure - something.
I'm unsure what the most appropriate response is - if we assume that the obvious one (get the provider to fix their stuff) isn't available.
Some options I can think of:
Make a fixed WSDL?
Hack the generated code?
Any other options?
No good options?
What good experiences have people had? What works in a real environment?
Thanks
I'd try for the first option, make a fixed wsdl. If that doesn't work then you could fall back on hacking the generated code.
Of course if the service is radically different from the WSDL you might not have much luck with those 2 options.
If you're lucky there's another way. Some web service frameworks support returning a dynamically generated WSDL.
I know with an AXIS 1.4 service you can do a GET on the service url + '?WSDL' and get back a dynamically generated WSDL.
e.g. http://foo.com/service/?WSDL
First I would try to confirm if the tool created a correct binding for the WSDL. If the WSDL is correct and the tool generates bad bindings which do not result in correct SOAP request / response processing, the tool author might provide a fix or a workaround.

ColdFusion Webservice Parameter Structures

We are trying to consume web services with ColdFusion.
I am able to interact with the web service for the most part, however, there is one service where ColdFusion is throwing a "Parameters Could Not Be Found" error because the response message in the WSDL for this particular service is a blank parent class. I need to add the specific parameters of corresponding subclass that inherits the class pointed to in the service of the WSDL.
Is there a way to tell ColdFusion to use a certain class definition for the parameters?
Or, is there a ColdFusion tool for showing the acceptable parameter formats for a given WSDL?
EDIT
Or, is there a way to hook into the ColdFusion code that does the parsing/conversion of the parameter structure from the WSDL?
My guess is that even finding a third-party tool will not help much because I need to know what ColdFusion is going to do, not what the data SHOULD be; I know what it should be.
You can use your own WSDL file, you don't have to use the one generated by ColdFusion, just generate one, customize it and point people to your custom WSDL file instead of the YourComponent.cfc?WSDL url.
This article on consuming complex web services may help:
http://tjordahl.blogspot.com/2008/04/reprint-consuming-web-service-complex.html
Also note that if you have a copy of Dreamweaver laying around, it has a tool for inspecting WSDL and generating the required ColdFusion code.
Or, is there a ColdFusion tool for showing the acceptable parameter formats for a given wsdl?
Please see this SO question and answer
Maybe my code samples can help you.

What method can I use to call a web service from VBA?

What is the easiest way to call a web service from Excel (I am using version 2002)? Please, no third party tools or libraries. This has to be easy with some VBA that I can paste there, use it, and ever touch.
I don't think there is any especially easy way to talk to SOAP directly from VBA, but a web service with a RESTful interface (i.e. the whole thing can be done via a URL) is easier: I was looking at this article just today. Another article I just found is here.
If you're stuck with SOAP, however, you could start by reading this and this. Frankly, it all looks a bit nasty.