当前位置: 首页 > news >正文

9.Java通过axis调用WebService

转自:https://www.cnblogs.com/fu-yun/p/4553685.html

包含:axis.jar,commons-discovery.jar,commons-logging-1.0.4.jar,jaxrpc.jar,wsdl4j.jar,mail.jar。

为什么会有mail.jar呢?俺也不太清楚,如果没有的话会报警告:

-10-22 15:07:45 org.apache.axis.utils.JavaUtils isAttachmentSupported 警告: Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.

网上有很多说这个问题的,但是还是没闹明白,还是加上mail.jar稳妥点。

对接webservice一定要有接口地址了

例如:

http://10.10.10.10:8080/xxxxx/services/XXXXWebservice?wsdl

直接上我写的测试代码吧(包名、地址、类名我都换成xxx了)

soapaction是通过访问接口地址获得的,targetNamespace

<wsdl:definitions targetNamespace="http://webservice.xxxx.com">
复制代码
package xx.xxxx.xxx; import java.net.URL; import javax.xml.namespace.QName; import javax.xml.rpc.ParameterMode; import javax.xml.rpc.encoding.XMLType; import org.apache.axis.client.Call; import org.apache.axis.client.Service; public class XXXWebService { public static void main(String[] args) { String soapaction = "http://webservice.xxxxxx.com"; //你的webservice地址 String endpoint = "http://10.10.10.10:8080/xxxxx/services/XXXXWebservice"; Service service = new Service(); try { Call call = (Call) service.createCall(); call.setTimeout(new Integer(60000)); call.setTargetEndpointAddress(new URL(endpoint)); //你需要远程调用的方法 call.setOperationName(new QName(soapaction,"getXXXX")); //方法参数,如果没有参数请无视 call.addParameter(new QName(soapaction,"xxxxxx"), XMLType.XSD_STRING, ParameterMode.IN); call.addParameter(new QName(soapaction,"xxxx"), XMLType.XSD_STRING, ParameterMode.IN); //设置返回类型,对方接口返回的json,我就用string接收了,自定义类型另贴一个代码 call.setReturnType(XMLType.XSD_STRING); //调用方法并传递参数,没有参数的话: call.invoke(new Object[] { null}); String result = (String) call.invoke(new Object[]{"xxxxx","xx,xx"}); System.out.println(result); } catch (Exception e) { e.printStackTrace(); } } }
复制代码

下面是处理自定义类型        处理自定义返回类型我用的是dom4j  jar包: http://pan.baidu.com/s/1jGGfNZg

复制代码
       call.setReturnType(XMLType.XSD_SCHEMA); //没有参数就写个null Schema data = (Schema) call.invoke(new Object[] { null}); MessageElement[] datas = data.get_any(); for (int i = 0; i < datas.length; i++) { SAXReader reader = new org.dom4j.io.SAXReader(); Document doc = reader.read(new ByteArrayInputStream(datas[i].toString().getBytes())); /* 例:这是你调用方法返回的文档 * <ns:getXXXXXXX> * <ns:return type="xx.xxx.xxx.xxxx.XXXXX"> * <ax21:objects type="xx.xxx.xxx.xxxx.XXXXX"> * <ax21:attribute>巴拉巴拉</ax21:attribute> * </ax21:objects> * </ns:return> * </ns:getXXXXXXX> */ //这里的ns1:xxx 对应上面的ax21:objects Node node = doc.selectSingleNode("ns1:xxx"); if (node != null) { //这里就是获取object下的属性了 Node attribute= node.selectSingleNode("ns1:attribute"); System.out.println(attribute); } }

相关文章:

  • WCF服务在JavaScript中使用ASP.NET的AJAX方法
  • .net反混淆脱壳工具de4dot的使用
  • 用脚本实现1+2+3...100
  • 域控改ip地址
  • 今天玩VMWARE8.0
  • 洛谷——P1679 神奇的四次方数
  • 怎样解决spoolsv.exe应用程序错误
  • 【TUP第11期】豆瓣网解彦博:好钢用在刀刃上
  • halcon算子翻译——dev_unmap_prog
  • Windows 8:HTML5和JavaScript只是一种选择
  • 关于virtualbox配置centos7的网络问题
  • 极速理解设计模式系列:8.策略模式(Strategy Pattern)
  • Deploy Office Communications Server 2007R2 Group Chat Server(二)
  • 不怕狼一样的敌人,就怕狗一样的朋友
  • Powershell管理系列(九)删除Exchange用户邮箱中多余的电子邮件地址
  • 【翻译】babel对TC39装饰器草案的实现
  • 【技术性】Search知识
  • 2019.2.20 c++ 知识梳理
  • FineReport中如何实现自动滚屏效果
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • javascript 哈希表
  • KMP算法及优化
  • Laravel Telescope:优雅的应用调试工具
  • SAP云平台里Global Account和Sub Account的关系
  • spring security oauth2 password授权模式
  • spring-boot List转Page
  • SQLServer之创建数据库快照
  • Swoft 源码剖析 - 代码自动更新机制
  • 爱情 北京女病人
  • - 概述 - 《设计模式(极简c++版)》
  • 前端工程化(Gulp、Webpack)-webpack
  • 三分钟教你同步 Visual Studio Code 设置
  • 数据库巡检项
  • $(selector).each()和$.each()的区别
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (二)c52学习之旅-简单了解单片机
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (南京观海微电子)——COF介绍
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)详解PHP处理密码的几种方式
  • (转)原始图像数据和PDF中的图像数据
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .chm格式文件如何阅读
  • .Family_物联网
  • .gitignore文件—git忽略文件
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .NET和.COM和.CN域名区别
  • @Transactional 竟也能解决分布式事务?
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • [].shift.call( arguments ) 和 [].slice.call( arguments )
  • [2]十道算法题【Java实现】
  • [2016.7 test.5] T1