Java访问非.NET的webservice(axis2方式)

前一段总结了一篇Java调用webservice的方式,当时因客户是局域网,所以只是在我们本地用.NET实现了一个webservice,然后进行测试,测试是通过的.但是在前一段去现场部署后,却一直的出异常,抛出的异常为null while involing ...找了很多原因都没有结果.后来百度了很多帖子发现一个比较全面的连接webservice的方法,貌似还区分连接.NET系统和其他系统.将信将疑就挑了一种实现方式.自己还搭建了一个Java实现的webservice做实验,发现原来的方法确实没有将值传到webservice上.最后部署到客户方发现真的成功了.故记录一下.

EndpointReference endpointReference = new EndpointReference(url);//url为webservice路径,不带?wsdl
// 创建一个OMFactory,下面的namespace、方法与参数均需由它创建
OMFactory factory = OMAbstractFactory.getOMFactory();
// 创建命名空间.<span style="font-family: Arial, Helvetica, sans-serif;">urn</span><span style="font-family: Arial, Helvetica, sans-serif;">不用变,</span><span style="font-family: Arial, Helvetica, sans-serif;">xmlns</span><span style="font-family: Arial, Helvetica, sans-serif;">对应xml文件中的</span><span style="font-family: Arial, Helvetica, sans-serif;">targetNamespace</span><span style="font-family: Arial, Helvetica, sans-serif;">
</span>OMNamespace namespace = factory.createOMNamespace(xmlns, "urn");//
// 参数对数 arg0 arg1 arg2 分别对应要调用的webservice所对应值的名称
OMElement nameElement = factory.createOMElement("arg0",null);
nameElement.addChild(factory.createOMText(nameElement, "参数一"));
OMElement nameElement1 = factory.createOMElement("arg1",null);
nameElement1.addChild(factory.createOMText(nameElement1,"参数二"));
OMElement nameElement2 = factory.createOMElement("arg2",null);
nameElement2.addChild(factory.createOMText(nameElement2,"参数三"));
// 创建一个method对象
OMElement method = factory.createOMElement("这里是要调用的方法名", namespace);
//将参数添加进去
method.addChild(nameElement);
method.addChild(nameElement1);
method.addChild(nameElement2);
Options options = new Options();
options.setTo(endpointReference);
options.setSoapVersionURI(org.apache.axiom.soap.SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI); 
ServiceClient sender = new ServiceClient();
sender.setOptions(options);
// 请求并得到结果
OMElement element = sender.sendReceive(method);
//System.out.println(element);就可以打印出结果,但是结果是以xml格式显示的.可以通过迭代器遍历
<span style="font-family: Arial, Helvetica, sans-serif;"></span>Iterator iterator = element.getChildElements();返回迭代器进行遍历
while(iterator.hasNext()) {
<span style="white-space:pre">	</span>String result = ((OMElement) iterator.next()).getText();//getText()可以返回标签中的值
<span style="white-space:pre">	</span>System.out.println(result);
}

所需jar包http://download.csdn.net/detail/c5906343/8068967

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值