webservice客户端asmx[通俗易懂]

webservice客户端asmx[通俗易懂]记录一次webservice接口访问服务端一般会给个以http://xxx/services.asmx。以前都是wsdl做服务端,采用idea自带的工具生成客户端或者用wsdl2java工具生成。从网上找了好多方法,最后终于成功了。服务端的URL:asmx的请求与响应代码:<!–请求–>POST/webService/services/webServiceImplService.asmxHTTP/1.1Host:172.16.1.20Content-Ty

大家好,又见面了,我是你们的朋友全栈君。

记录一次webservice接口访问服务端一般会给个以http://xxx/services.asmx。

以前都是wsdl做服务端,采用idea自带的工具生成客户端或者用wsdl2java工具生成。

从网上找了好多方法,最后终于成功了。

服务端的URL:

webservice客户端asmx[通俗易懂]

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.ServiceCall。代码如下:

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());
		}
}

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/130385.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • linux 复制文件夹内所有文件到另一个文件夹

    linux 复制文件夹内所有文件到另一个文件夹cp-Rf/home/user1/*/root/temp/将/home/user1目录下的所有东西拷到/root/temp/下而不拷贝user1目录本身。即格式为:cp-Rf原路径/目的路径/

  • jquery实现轮播图_用jquery实现图片轮播图代码

    jquery实现轮播图_用jquery实现图片轮播图代码HTML代码:&lt;divclass="content_right"&gt;&lt;divclass="ad"&gt;&lt;ulclass="slider"&gt;&lt;li&gt;&lt;imgsrc=&quot

  • mybatis 原理[通俗易懂]

    mybatis 原理[通俗易懂]问题:mybatis是基于mapper接口开发的,mapper接口是执行SQL语句的呢?mybatis对mapper代码的包装主要包含了4个类。1.首先mapper需要将接口进行注册,并且需要获得mapper代理工厂(mapperregistry)mapperregistry类将mapper接口进行注册,并获取mapper代理工厂的工具类(mapperproxyfactory)2.加载mapp…

    2022年10月30日
  • linux进程间通信方式有哪些_高级进程通信方式

    linux进程间通信方式有哪些_高级进程通信方式前言进程能够单独运行并且完成一些任务,但是也经常免不了和其他进程传输数据或互相通知消息,即需要进行通信,本文将简单介绍一些进程之间相互通信的技术–进程间通信(InterProcessCommunication,IPC)。由于篇幅有限,本文不会对每一种进行详细介绍。概览进程间通信常见方式如下: 管道 FIFO 消息队列 信号量 共享内存…

    2022年10月11日
  • bs与cs架构的区别_cs架构嵌入BS

    bs与cs架构的区别_cs架构嵌入BSC/S架构:即Client/Server架构,即客户端/服务器架构。是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,需要安装客户端才可进行管理操作。客户端和服务器端的程序不同,用户的程序主要在客户端,服务器端主要提供数据管理、数据共享、数据及系统维护和并发控制等,客户端程序主要完成用户的具体的业务。开发比较容易,操作简便,但应用程序的升级和客…

    2022年10月10日
  • 小米手机MIUI安装Google服务框架和Google Play的教程[通俗易懂]

    GooglePlay上的APP普遍比国内应用商店的要干净得多,权限要求更少,这也是促使很多人使用GooglePlay的原因。步骤如下:1、打开小米应用商店,搜索“谷歌安装器”,拉到最下面,“去豌豆荚搜索”image2、找到谷歌安装器3.0image3、开始安装Google服务框架和GooglePlayimage整个过程无需SS,在国内网络即可完成。最后,连上SS,登录GooglePlay,开始下载干净的app吧,少年。…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号