0

我有以下情况,我必须使用用python编写的Web服务和Java中的soaplib。我可以在 Eclipse 中很好地导入 Web 服务,但是当我尝试调用 Web 服务的方法时,我收到以下错误消息...

    轴故障
     故障代码:{http://schemas.xmlsoap.org/soap/envelope/}Server.userException
     故障子代码:
     faultString:org.xml.sax.SAXParseException:prolog 中不允许内容。
     故障演员:
     故障节点:
     故障详情:

因此,我尝试使用soaplib 构建自己的小型Web 服务来尝试一下。这是使用soaplib 运行的Web 服务服务器和内部http 服务器。简单的方法

    导入soaplib
    从soaplib.core.service 导入rpc,DefinitionBase
    从soaplib.core.model.primitive 导入字符串,整数
    从soaplib.core.server 导入wsgi
    从soaplib.core.model.clazz 导入数组
    从soaplib.core.service 导入soap

    类 HelloWorldService(DefinitionBase):
        @soap(字符串,_returns=字符串)
        def say_hello(self,name):
            结果 = '你好,%s'%name
            print('你好,%s' % 名字)
            返回结果

    如果 __name__=='__main__':
        尝试:
            从 wsgiref.simple_server 导入 make_server
            soap_application = soaplib.core.Application([HelloWorldService], 'tns')
            wsgi_application = wsgi.Application(soap_application)
            server = make_server('pc-frank', 7789, wsgi_application)
            server.serve_forever()
        导入错误除外:
            print "错误:示例服务器代码需要 Python >= 2.5"

这是我尝试使用的java类

    导入 java.rmi.RemoteException;
    导入静态 java.lang.System.out;
    导入 tns.*;

    公共类 testws {
        公共静态无效主要(字符串[]参数){
            ApplicationProxy ws = new ApplicationProxy();
            尝试 {
                字符串测试 = ws.say_hello("world");
                out.println(test);
            } 捕捉(远程异常 e){
                // TODO 自动生成的 catch 块
                e.printStackTrace();
            }
        }   
    }

非常感谢任何帮助!

4

1 回答 1

0

听起来请求或响应都没有解析。我会捕获两者并通过验证工具运行它们。网上有很多它们允许您将 XML 粘贴进去,看看为什么它没有验证。

于 2012-03-20T13:20:40.530 回答