JavaScript SOAP client throwing an Uncaught TypeError

910 views Asked by At

I am using the guru4's soap client to write a simple "Hello world" program. I am getting an error from the Chrome console Uncaught TypeError: Cannot read property 'documentElement' of null.

Here is my JavaScript.

  <script src="soapclient.js"></script>
  <script type="text/javascript">
    function say_hello()
    {

        var pl = new SOAPClientParameters();
        pl.add("name", "john");
        pl.add("times", 2);
        SOAPClient.invoke("http://192.168.1.100:7789/", "say_hello", pl, true, say_hello_callBack);
    }
    function say_hello_callBack(r)
    {
        alert(r);
    }
  </script>

Here is the server I am trying to interact with.

import soaplib

from soaplib.core.service import soap
from soaplib.core.service import DefinitionBase
from soaplib.core.model.primitive import String, Integer

from soaplib.core.server import wsgi
from soaplib.core.model.clazz import Array

'''
This is a simple HelloWorld example to show the basics of writing
a webservice using soaplib, starting a server, and creating a service
client.
'''

class HelloWorldService(DefinitionBase):
    @soap(String, Integer, _returns=Array(String))
    def say_hello(self, name, times):
        '''
        Docstrings for service methods appear as documentation in the wsdl
        <b>what fun</b>
        @param name the name to say hello to
        @param the number of times to say hello
        @return the completed array
        '''
        results = []
        for i in range(0, times):
            results.append('Hello, %s' % name)
        return results

if __name__=='__main__':
    try:
        from wsgiref.simple_server import make_server
        soap_application = soaplib.core.Application([HelloWorldService], 'tns')
        wsgi_application = wsgi.Application(soap_application)

        print "listening to http://0.0.0.0:7789"
        print "wsdl is at: http://127.0.0.1:7789/?wsdl"

        server = make_server('localhost', 7789, wsgi_application)
        server.serve_forever()

    except ImportError:
        print "Error: example server code requires Python >= 2.5"

I have a feeling this error is occurring because I am relying on the SOAP clients build-in XML generator.

1

There are 1 answers

0
introkun On

You could open 'Web Developer Tools' (Ctrl+Shift+J) and take a look at JS code. May be there is no WSDL. May be result message has name that is not supported by this 'JavaScript SOAP client' (it should be named like MethodName + "Result", e.g. LoginResult).