我有以下情况,我必须使用用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();
}
}
}
非常感谢任何帮助!