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