java 调用webservice asmx「建议收藏」
大家好,又见面了,我是你们的朋友全栈君。
用的jar包axis,可以在http://download.csdn.net/download/xiaoyong8823/4391971 这里下载
因为最近有个项目要调用webservice接口,之前接触的都是Java开发服务端和客户端的接口,开发前服务端一般会给个以http://xxx/services?wsdl地址的文件或者地址。这次对方给我个http://xxxx/service/getinfo.asmx 的连接,我就傻眼了,之前没有遇到过,是不是给错了,跟对方联系说是他们的服务端是用C#开发的。c#没学过,webservice的特性之一就是可以跨语言的,不会只能找度娘。
参考了:http://blog.csdn.NET/leon_ice/article/details/4466613 的文章自己也总结了点东西
本文只将如果用java开发客户端
1、.asmx调用方式和之前cxf 或者xfire 方式不同,不需要生成客户端代码,直接调用使用,先把我的代码贴出来,然后根据代码一步步说明。
public String test() throws RemoteException, ServiceException, MalformedURLException{
String inputParam = “测试“; Service service = new Service(); String url = “http://xxxxxxx/service/getinfo.asmx”; //URL地址 String namespace = “http://tempuri.org/”; String actionUri = “getinfo”; //Action路径 String op = “getinfo”; //要调用的方法名 Call call = (Call) service.createCall(); call.setTargetEndpointAddress(new java.net.URL(url)); call.setUseSOAPAction(true); call.setSOAPActionURI(namespace + actionUri); // action uri call.setOperationName(new QName(namespace, op));// 设置要调用哪个方法 // 设置参数名称,具体参照从浏览器中看到的 call.addParameter(new QName(namespace, “strMac”), XMLType.XSD_STRING, ParameterMode.IN); //设置请求参数及类型 //call.setReturnType(new QName(namespace,”getinfo”),Model.class); //设置返回结果为是某个类 call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//设置结果返回类型 Object[] params = new Object[] {inputParam}; String result = (String) call.invoke(params); //方法执行后的返回值 System.out.println(result); return result; }
2、打开http://xxxx/service/getinfo.asmx 连接会出现类似如下内容,红框部分为调用方法,
3、点击进去后可以看到,SOAPAction 对应上面代码中的namespace,注意去掉后面的方法名,后面会单独拼接这个方法名
可以看到请求参数名、类型和返回结果类型。
如果报的错误是格式错误 ,那么有可能是参数问题,即使接口写的是int类型,传参也需要传入字符串类型
call.addParameter(new QName(namespace, “strMac”), XMLType.XSD_INT, ParameterMode.IN); //设置请求参数及类型
如这里写的int ,后面object’数组仍然要写“333”
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/137664.html原文链接:https://javaforall.cn
相关文章
- 怎么用命令提示符运行JAVA代码_java命令提示符如何进入
- java setattribute_java – HttpSession setAttribute并不总是插入新对象「建议收藏」
- Java核心知识点精心整理(全是精华)「建议收藏」
- Java菜鸟教程 递归算法与Scanner类「建议收藏」
- java IO流详尽解析「建议收藏」
- Java——数组的定义与使用「建议收藏」
- 金九银十准备季:Java IO流面试题(含答案)「建议收藏」
- java中打印数组的方法_Java数组方法–如何在Java中打印数组
- JAVA面试基础「建议收藏」
- Java集合有哪些?「建议收藏」
- 浅谈一下学Java和python哪个好(个人观点)「建议收藏」
- Java和Python有什么区别,初学者学Java还是Python?「建议收藏」
- Java中Scanner的理解大总结「建议收藏」
- ‘java‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件「建议收藏」
- java获取服务器路径_Java获取此次请求URL以及服务器根路径的方法「建议收藏」
- java urlencoder,java中的URLEncoder和URLDecoder类「建议收藏」
- 23篇大数据系列(一)java基础知识全集(2万字干货,建议收藏)
- Java中JDK和JRE的区别是什么?它们的作用分别是什么?「建议收藏」
- Java–Java版本和JDK版本「建议收藏」
- java mutator,Java – 使用Accessor和Mutator方法「建议收藏」
- java 缓存工具类初始化_Java缓存框架
- Java程序员的MySQL数据库之旅(java操作mysql数据库)
- Linux上善用Java:实现智能开发(linux 运行java)
- 利用Redis锁实现Java程序并发控制(redis锁java实现)