SOAP Server


(Jamie Smith) #1

I've created a SOAP Server asset called test under the Web Services Folder. The asset has public read access and I can view the XML in the browser at, e.g., //www.foo.co.uk/_web_services/test?wsdl. However, when I add a SOAP API Asset Service asset under the Server asset and go back to //www.foo.co.uk/_web_services/test?wsdl, one of our other domains (www.bar.co.uk) is referenced (e.g in the targetNamespace attributes, and the location attribute of the <soap:address> tag) – please see below XML.

<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.bar.co.uk/_web_services/test" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="http://www.bar.co.uk/_web_services/test">
    <wsdl:types>
        <s:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.bar.co.uk/_web_services/test"/>
    </wsdl:types>
    <wsdl:portType name="MatrixSOAPService"/>
    <wsdl:binding name="MatrixSOAPServiceBinding" type="tns:MatrixSOAPService">
        <soap:binding xmlns="http://schemas.xmlsoap.org/wsdl/soap/" style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    </wsdl:binding>
    <wsdl:service name="MatrixWebServices">
        <wsdl:port xmlns:default="http://schemas.xmlsoap.org/wsdl/soap/" name="MatrixWebServicesPort" binding="tns:MatrixSOAPServiceBinding">
            <soap:address xmlns="http://schemas.xmlsoap.org/wsdl/soap/" location="http://www.bar.co.uk/_web_services/test?wsdl"/>
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>

When I do a jQuery $.ajax() call to the API's GetTags function, it returns an Internal Service Error. I believe this is due to the incorrect domain (www.bar.co.uk instead of www.foo.co.uk) being referenced within the XML.

 

Should the domain within the XML reflect the domain that the XML is accessed over, or am I misunderstanding something?


(Nic Hubbard) #2

I had these issues in the past.

 

You need to make sure that you are logged into _admin with the correct URL that you want your wsdl served from, and then regenerate the WSDL when using that URL. 


(Bart Banda) #3

Yep, a new feature was recently released that lets you choose the domain for the namespace. 


(Jamie Smith) #4

I had these issues in the past. 
You need to make sure that you are logged into _admin with the correct URL that you want your wsdl served from, and then regenerate the WSDL when using that URL.


That did the trick. Many thanks, Nic.