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);
}
}
9.Java通过axis调用WebService的更多相关文章
- (转)Java通过axis调用WebService
转自:http://blog.csdn.net/wanglha/article/details/49679825 转载地址:http://www.linuxidc.com/Linux/2015-06/ ...
- Java通过axis调用WebService
上午头给了我一个任务,让我对接别的公司的webservice接口,各种百度,看的头晕脑花的,终于通了,记录一下吧. jar包奉上,http://pan.baidu.com/s/1jSchC 包含:ax ...
- Java通过axis调用.NET WebService
前面已经记录过通过axis调用webservice,昨天在对接.NET接口时,发现在传递参数时和一般的传参方法是不一样的,在接口方哥们的帮助下解决了.哈哈. import java.net.URL; ...
- Java调用WebService方法总结(4)--Axis调用WebService
Axis是比较常用的WebService框架,该项目在2006实现了最终版,后面就没有更新了.文中demo所使用到的软件版本:Java 1.8.0_191.Axis 1.4. 1.准备 参考Java调 ...
- 使用axis调用WebService服务端
由于项目中要调用其他公司的接口,研究了下axis调用webService这种方式,现将代码贴出,以备以后查阅: package com.xbq; import javax.xml.namespace. ...
- Java之HttpClient调用WebService接口发送短信源码实战
摘要 Java之HttpClient调用WebService接口发送短信源码实战 一:接口文档 二:WSDL 三:HttpClient方法 HttpClient方法一 HttpClient方法二 Ht ...
- Java 使用Axis实现WebService实例
在上一篇WebService实例中,基于jdk1.6以上的javax.jws 发布webservice接口.这篇博文则主要用eclipse/myeclipse 使用axis插件进行发布和调用WebSe ...
- axis调用webservice客户端开发
第一步:wsdl2Java.bat文件编写 Axis_Lib表示依赖的jar包路径 Output_Path表示生成的class路径 Package包名 还需要手动更改 -p %Package%表示we ...
- Java使用HttpURLConnection调用WebService(原始方法)
说明:使用Java原生的HttpURLConnection调用WebService可以免去引入SOA的框架,比如一些CXF框架等.可以使代码足够精简,比如对于一些只调用一两个接口的,这种方式是最适合的 ...
随机推荐
- Hadoop框架基础(三)
** Hadoop框架基础(三) 上一节我们使用eclipse运行展示了hdfs系统中的某个文件数据,这一节我们简析一下离线计算框架MapReduce,以及通过eclipse来编写关于MapReduc ...
- HD-ACM算法专攻系列(2)——Rightmost Digit
题目描述: 源码: /**/ #include"iostream" using namespace std; int main() { int t, mod; long long ...
- Hyper-V 导入与导出虚拟机
虚拟机的导入与导出功能可以将虚拟机通过文件的方式进行转移,可以将虚拟机的文件复制到活动硬盘,然后带到其他的地点进行导入,这样方便了虚拟机的跨地域的转移.但是有一点要注意,所有要转移的虚拟机都必须处于停 ...
- [POI2002][HAOI2007]反素数 数论 搜索 好题
题目描述: 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数1,2,4, ...
- Unity经验之谈
1.全屏与非全屏之间的切换 if (Input.GetMouseButtonDown(1)) { Screen.fullScreen = !Screen.fullScreen; } 2.Camera适 ...
- 题解 BZOJ4919 【大根堆】
题面:传送门. 老师说今天要考一道线段树合并,然后...然后这道题我就GG了.(当然可以用线段树合并写,只是比较复杂) 有人赛时想了个贪心,然后被机房巨佬hack了,结果在hack的过程中巨佬想出了正 ...
- 【Codeforces Round #422 (Div. 2) C】Hacker, pack your bags!(hash写法)
接上一篇文章; 这里直接把左端点和右端点映射到vector数组上; 映射一个open和close数组; 枚举1..2e5 如果open[i]内有安排; 则用那个安排和dp数组来更新答案; 更新答案完之 ...
- iOS 画圆形头像
demo下载地址:http://pan.baidu.com/s/1mgBf6YG _logoImageView.image = [self getEllipseImageWithImage:[UIIm ...
- abap选择屏幕上的button
1.背景:近期在看sap的一些abapDemo,看了一个比較好用的功能.分享一下.希望对用到的兄弟有帮助,主要功能是:在选择屏幕上弹出一个小窗体.放一些button在上面,触发不同button,会处理 ...
- 在Fedora18上配置个人的Hadoop开发环境
在Fedora18上配置个人的Hadoop开发环境 1. 背景 文章中讲述了类似于"personalcondor"的一种"personal hadoop" ...