webservice客户端asmx
记录一次webservice接口访问服务端一般会给个以http://xxx/services.asmx。
以前都是wsdl做服务端,采用idea自带的工具生成客户端或者用wsdl2java工具生成。
从网上找了好多方法,最后终于成功了。
服务端的URL:
asmx的请求与响应代码:
<!--请求-->
POST /webService/services/webServiceImplService.asmx HTTP/1.1
Host: 172.16.1.20
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://webService/services/webServiceImplService/SendInfo"<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><SendInfo xmlns="http://webService/services/webServiceImplService"><Data>string</Data></SendInfo></soap:Body>
</soap:Envelope>
<!--响应-->
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><SendInfoResponse xmlns="http://webService/services/webServiceImplService"><SendInfoResult>string</SendInfoResult></SendInfoResponse></soap:Body>
</soap:Envelope>
方法一
asmx也可以用wsdl2java工具生成。就在http://xxx/services.asmx后加?wsdl即可。生成方式可百度,有很多。如果这么简单我就不会写这篇文章了/哭
我这个服务端地址里面包含了很多方法。其中有参数是重复的,导致用wsdl2java工具生成时一直报某某字段重复。我从网上找了个asmx文件是可以用wsdl2java生成的。所以这个方法是没法用的。
方法二
直接使用org.apache.axis.client.Service和Call。代码如下:
public static void main(String[] args) throws Exception {String url = "http://ip:port/webService/services/webServiceImplService.asmx";//这里有个坑,一定要注意最后是否有反斜线!!!String namespace = "http://webService/services/webServiceImplService";//action路径(方法名)String actionUri = "SendInfo";//方法名String op = "SendInfo";Service service = new Service();Call call = (Call) service.createCall();call.setTargetEndpointAddress(new URL(url));call.setUseSOAPAction(true);// 在创建QName对象时,QName类的构造方法的第一个参数表示WSDL文件的命名空间名,也就是<wsdl:definitions>元素的targetNamespace属性值call.setSOAPActionURI(namespace +"/"+actionUri);call.setReturnType(XMLType.XSD_STRING);call.setOperationName(new QName(namespace, op)); // 设置要调用哪个方法call.addParameter(new QName(namespace,"Data"), // 设置要传递的参数(形参)XMLType.XSD_STRING, ParameterMode.IN);String json = "传递的数据";Object[] params = new Object[]{json};String response = "";try {response = (String) call.invoke(params);// 调用方法并传递参数}catch (Exception e){e.printStackTrace();//输出SOAP发送的请求报文System.out.println("--SOAP Request: " + call.getMessageContext().getRequestMessage().getSOAPPartAsString());}
}
webservice客户端asmx相关推荐
- 如何调用天气接口(如何解决WebService客户端引用 服务器无法处理请求。 未将对象引用设置到对象的实例)
正常操作是: 添加服务引用 输入UPL地址,更改命名空间 确定 然后在cs文件里面引用WebServer所在的命名空间,实例化类,就可以调用其中方法 调用getWeather()方法的时候会报 服务器 ...
- Webservice实践(二)Webservice 客户端开发
现在我们首先进行客户端开发的实践,从客户端实践来了解一下webservice的应用场景.比如说现在已经有一个webservice服务,提供的翻译方面的功能服务(主要是免费的webservice接口现在 ...
- WebService客户端添加SOAPHeader信息
WebService客户端添加SOAPHeader信息 通过JAXBContext创建Marshaller对头信息进行解析为dom,获取WSBindingProvider,使用Headers.crea ...
- webservice客户端开发
一.根据约定条件生成客户端 1.需要axis.jar包 2.调用 import org.apache.axis.client.Call; import org.apache.axis.client.S ...
- 如何使用soapUI模拟webservice客户端发送请求
随着软件行业的发展,一个完成的系统已经不能使用简单的项目来完成,而是有多个项目之间相互协同工作,项目之间就需要进行即时通讯,现在比较流行的通讯方式是通过webservice服务.比较流程的webser ...
- 基于Axis服务端的webservice客户端实现
之前开发webservice客户端的时候遇到一个使用Axis2开发接口的厂家,查资料把Axis1和Axis2客户端的开发方式总结如下: 基于Axis1服务端的客户端实现: /*** 使用Axis Ca ...
- WebService客户端开发(Axis2 1.5)
WebService的客户端开发方式很多,如果单纯为了使用一个WebService,而不想依赖太多的框架,那么随便选择个WebService框架就可以了. 为了封装方便,代码复用,更好的性能,一般选择 ...
- cmd命令生成webservice_根据wsdl文件生成WebService客户端代码
有时候在项目中,一个项目可能有好几个公司在做.系统之间难免会出现互相调用接口的现象,这时候有一种办法就是使用webService.本篇文章将介绍如何将对接系统提供的WebService接口,根据对方提 ...
- WebService客户端三种调用方式整理
1 WebService基础 1.1 作用 1, WebService是两个系统的远程调用,使两个系统进行数据交互,如应用: 天气预报服务.银行ATM取款.使用邮箱账号登录各网站等. 2, ...
最新文章
- 干货 | 上手机器学习,从搞懂这十大经典算法开始
- 通过源码分析MyBatis的缓存
- Java垃圾回收(GC)、找垃圾的方式、GC Root、GC停顿、引用、垃圾收集算法、收集器、GC日志、安全点、安全区域
- (转)微信公众平台关于fakeid和openid的解析
- java阿里系学习经历的小小领悟
- 一开机未通过输入密码登录,就出现用户名或密码错误??
- 为什么自由职业受追捧?
- 一种用于茶叶病害识别的低阶学习方法
- cmd命令行四种弹窗命令
- 矩阵 向量 线性变换 基变换
- golang 文件命名规则
- 截止失真放大电路_模拟电路-BJT晶体管及电路
- okGo框架的使用,下载列表显示
- Java实验6 --模拟物流快递系统程序设计
- 造轮子--MLP与EBP的实现
- iFixit拆Galaxy Fold发现异物易入侵机内
- 场景文字检测之CTPN
- venn diagram_Venn Diagram Python软件包:Vennfig
- 从原理到代码:大牛教你如何用 TensorFlow 亲手搭建一套图像识别模块 | AI 研习社
- 最优化理论【第二章(凸函数)作业】