1.

其中sendSyncMsg1接口是方法名,Vector实现了List接口,xml是sendSyncMsg1的方法形参

Service service = new Service();

Call call = (Call) service.createCall();

call.setTargetEndpointAddress(new URL(     "http://127.0.0.1:8080/services/fangkunTest"));

call.setOperationName(new QName("http://127.0.0.1:8080/",     "sendSyncMsg1"));

call.addParameter(new QName("http://127.0.0.1:8080/", "xml"),     XMLType.XSD_STRING, ParameterMode.IN);   //必须这么用,不知道为啥,此处与返回基本类型写法有差别

call.setReturnType(XMLType.SOAP_VECTOR);   //返回时数组类型,暂时知道用XMLType.SOAP_VECTOR

call.setUseSOAPAction(true);

call.setSOAPActionURI("http://127.0.0.1:8080/sendSyncMsg1");

Vector result = (Vector) call.invoke(new Object[] { "昆明" });

// Vector实现了List接口

System.out.println((String) result.get(1));

if (result != null && result.size() != 0) {

if (result.get(0).equals("1")) {

String etoken = (String) result.get(1);

} else {

System.out.println(result.get(2));

return;

}

}

2.(转来自google)

Java利用Axis远程调用WebService接口

准备工作:

  主要依赖的包:

  1.axis.jar

  官网:http://axis.apache.org/axis/

  2.jaxrpc.jar

  下载地址:http://www.java2s.com/Code/Jar/j/Downloadjaxrpcjar.htm

说明:

  在拿到wsdl地址后先分析清楚xml文件的一些参数,然后再动手写代码,例如service名称,targetNamespace,请求operation的名称,要传入的参数类型,返回结果类型等等。具体的代码参考如下:

 

1 package com.joysee.account.service.impl;
2
3
4 import java.rmi.RemoteException;
5
6 import javax.xml.namespace.QName;
7 import javax.xml.rpc.ParameterMode;
8 import javax.xml.rpc.ServiceException;
9
10 import org.apache.axis.client.Call;
11 import org.apache.axis.client.Service;
12
13
14 public class Test {
15
16 /**
17 * @param args
18 * @throws ServiceException
19 * @throws MalformedURLException
20 * @throws RemoteException
21 */
22 public static void main(String[] args) throws ServiceException, RemoteException {
23
24 //WSDL地址
25 String wsdlUrl ="http://IP:PORT/ExampleWebService?wsdl";
26 //看具体响应的WSDL中的namespace
27 String nameSpaceUri ="http://ws.exmaple.com/";
28
29 Service service = new Service();
30
31 Call call = (Call)service.createCall();
32 call.setTargetEndpointAddress(wsdlUrl);
33
34 //设置operation 名称,
35 call.setOperationName(new QName(nameSpaceUri, "order"));
36
37 //设置账户,注意参数为XSD_STRRING
38 call.addParameter("account", org.apache.axis.Constants.XSD_STRING,
39 ParameterMode.IN);
40
41 //设置账户,注意参数为XSD_LONG
42 call.addParameter("price", org.apache.axis.Constants.XSD_LONG,
43 ParameterMode.IN);
44
45 //设置返回类型为对象数组
46 call.setReturnClass(Object[].class);
47
48 Object[] result = (Object[]) call.invoke(new Object[]{"test","123456"});
49
50 System.out.println(result[0]);
51
52 }
53
54 }

常见异常:

1.org.xml.sax.SAXException: No deserializer for {http://www.w3.org/2001/XMLSchema}anyType

  这个异常需要检查call.setReturnClass(); 中的类型,或者是setReturnType()

2. Unexpected wrapper element order found.

 可以检查setOperationName中的QName参数,其中的NameSpace地址是不是有问题,或者operation名是否有误

webservice调用接口,接口返回数组类型的更多相关文章

  1. gsoap生成webservice调用客户端接口

    1.下载gsoap2.8 2.运行 wsdl2h.exe -o XXX.h XXX.wsdl wsdl文件可以是本地文件,也可以是服务器的wsdl,比如http://192.168.0.122:333 ...

  2. C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解

    前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.之前分享过一篇 C#进阶系列——WebApi接口传参不再困惑:传参详解  ...

  3. WebApi 接口返回值类型详解 ( 转 )

    使用过Webapi的园友应该都知道,Webapi的接口返回值主要有四种类型 void无返回值 IHttpActionResult HttpResponseMessage 自定义类型 此篇就围绕这四块分 ...

  4. WebApi接口返回值不困惑:返回值类型详解

    前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.作为程序猿,我们都知道参数和返回值是编程领域不可分割的两大块,此前分享了 ...

  5. WebApi 接口返回值不困惑:返回值类型详解。IHttpActionResult、void、HttpResponseMessage、自定义类型

    首先声明,我还没有这么强大的功底,只是感觉博主写的很好,就做了一个复制,请别因为这个鄙视我,博主网址:http://www.cnblogs.com/landeanfen/p/5501487.html ...

  6. (转)C# WebApi 接口返回值不困惑:返回值类型详解

    原文地址:http://www.cnblogs.com/landeanfen/p/5501487.html 正文 前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi ...

  7. [转]C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解

    本文转自:http://www.cnblogs.com/landeanfen/p/5501487.html 阅读目录 一.void无返回值 二.IHttpActionResult 1.Json(T c ...

  8. C#进阶系列——WebApi接口返回值类型详解

    阅读目录 一.void无返回值 二.IHttpActionResult 1.Json(T content) 2.Ok(). Ok(T content) 3.NotFound() 4.其他 5.自定义I ...

  9. Web Api 接口返回值不困惑:返回值类型详解

    前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.之前分享过一篇 WebApi 接口参数:传参详解,这篇博文内容本身很基础 ...

随机推荐

  1. BZOJ 1037 生日聚会

    Description 今天是hidadz小朋友的生日,她邀请了许多朋友来参加她的生日party. hidadz带着朋友们来到花园中,打算坐成一排玩游戏.为了游戏不至于无聊,就座的方案应满足如下条件: ...

  2. Qt tip 网络请求 QNetworkRequest QJason 处理 JSON

    http://blog.csdn.net/linbounconstraint/article/details/52399415 http://download.csdn.net/detail/linb ...

  3. BZOJ 1053 [HAOI2007]反素数ant

    1053: [HAOI2007]反素数ant Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1948  Solved: 1094[Submit][St ...

  4. COJ 2106 road

    road 难度级别: A: 编程语言:不限:运行时间限制:1000ms: 运行空间限制:131072KB: 代码长度限制:102400B 试题描述   某国有N个城市,这N个城市由M条双向道路连接.现 ...

  5. 如何解决设置Session保存在StateServer后引起WebService/WebMethod无法异步获取Session

    项目中有一个文件上传功能,需要显示文件上传进度.于是使用PageMethods 调用WebService/WebMethod . 在demo中测试一切正常.但是转移到项目中之后无法异步刷新文件上传进度 ...

  6. wpa_cli 连接 wifi

    转自:http://hi.baidu.com/yyangjjun/item/9dfe8e175439fc7a1009b5ba   1: run wpa_supplicant first use the ...

  7. Delphi stdCall意义

    Delphi stdCall意义 1.此代码所在单元是个库,可被别的应用来调用,像SysUtils.DateUtils.Classes等单元一样,都是为将来的无穷无尽的应用提供服务的.2.此代码还可能 ...

  8. Android按钮式进度条

    package com.example.progress.demo; import android.annotation.SuppressLint; import android.content.Co ...

  9. kickstrt脚本for cobbler基于system-config-kickstart配置

    1,由于是基于图形界面来生成ks自动安装脚本,所有图形生成ks脚本的服务器首先需要的就是有X Window System; 要是虚机的可以配个tigervnc-servere来进行操作 不说了直接上命 ...

  10. Wow! Such Doge! - HDU 4847 (水题)

    题目大意:题目描述了一大堆.....然而并没什么用,其实就是让求给的所有字符串里面有多少个"doge",不区分大小写.   代码如下: ====================== ...