java webservice asmx_WebService-asmx后缀接口调用[通俗易懂]

java webservice asmx_WebService-asmx后缀接口调用[通俗易懂]简述:.asmx是webservice服务程序的后缀名,ASP.NET使用.asmx文件来对WebServices的支持。.asmx文件和.aspx文件一样都属于文本文件。它包含在.aspx文件之中,成为ASP.NET应用程序的一部分。废话不多说上代码POM引用commons-discoverycommons-discovery0.2webService接口调用,并解析@Overridep…

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

简述:.asmx是webservice服务程序的后缀名,ASP.NET 使用.asmx 文件来对Web Services的支持。.asmx 文件和.aspx文件一样都属于文本文件。它包含在.aspx文件之中,成为ASP.NET应用程序的一部分。

废话不多说上代码

POM引用

commons-discovery

commons-discovery

0.2

webService接口调用,并解析

@Override

public List> selectStoreList(String FTY_CODE_, String DEPT_CODE_)throwsException {

List> storeItemList_ = new ArrayList<>();

//获取webservice接口地址

String endpoint = “http://10.18.26.71/WebService_SB/WS_EquipService.asmx”;

//获取域名地址,server定义的

String soapaction = “http://tempuri.org/”;

//调用的方法名

String method = “getStoreList”;

//创建一个服务(service)调用(call)

org.apache.axis.client.Service service = neworg.apache.axis.client.Service();

//创建一个服务(service)调用(call)

Call call = (Call) service.createCall();//通过service创建call对象

//设置service所在URL

call.setTargetEndpointAddress(endpoint);

call.setOperationName(newQName(soapaction, method));

//设置参数及类型,与接口参数对应

call.addParameter(new QName(soapaction, “plant”),

org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);

call.addParameter(new QName(soapaction, “depart”),

org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);

call.setUseSOAPAction(true);

call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_STRING); //返回参数的类型

call.setSOAPActionURI(soapaction + method); //这个也要注意 就是要加上要调用的方法getStoreList,不然也会报错

//invoke调用方法并传递参数,获取XML

String xmlStr = (String) call.invoke(newObject[]{FTY_CODE_, DEPT_CODE_});

if (xmlStr != null) {

StoreItemList storeItemList = BaseUtils.xmlToBean(xmlStr, StoreItemList.class);

MapstoreItem_;

for(StoreItem item : storeItemList.getStoreItemList()) {

storeItem_ = new HashMap();

storeItem_.put(“STORE_ID_”, item.getStoreId());

storeItem_.put(“STORE_DESC_”, item.getStoreDesc());

storeItemList_.add(storeItem_);

}

}

returnstoreItemList_;

}

以上是调用,如果有兴趣请往下看,具体实现的栗子

首先调用webServcie返回的xml数据样式要知道:

234

金矿厂机关作业区备件库房

233

金矿厂机关作业区材料库房

235

金矿厂机关作业区材料1库房

236

金矿厂机关作业区虚拟库房

根据返回的xml文件,创建自己的StoreItemList实体类(解析xml用)

packageorg.building.er.bean;importjavax.xml.bind.annotation.XmlAccessType;importjavax.xml.bind.annotation.XmlAccessorType;importjavax.xml.bind.annotation.XmlElement;importjavax.xml.bind.annotation.XmlRootElement;importjava.io.Serializable;importjava.util.List;/***@authordimo

* @date 2020/6/28*/@XmlRootElement(name= “items”)

@XmlAccessorType(XmlAccessType.FIELD)public class StoreItemList implementsSerializable {private static final long serialVersionUID = 1L;

@XmlElement(name= “item”)private ListstoreItemList;public StoreItemList(ListstoreItemList) {this.storeItemList =storeItemList;

}public ListgetStoreItemList() {returnstoreItemList;

}public void setItemList(ListstoreItemList) {this.storeItemList =storeItemList;

}

}

根据返回的xml文件,创建自己的创建StoreItem 实体类(解析xml用)

packageorg.building.er.bean;import javax.xml.bind.annotation.*;importjava.io.Serializable;/***@authordimo

* @date 2020/6/28*/@XmlRootElement(name=”item”)

@XmlType(propOrder= {“store_id”, “store_desc”})

@XmlAccessorType(XmlAccessType.FIELD)public class StoreItem implementsSerializable {private static final long serialVersionUID = 1L;privateString store_id;privateString store_desc;publicStoreItem() {

}publicString getStoreId() {returnstore_id;

}public voidsetStoreId(String store_id) {this.store_id =store_id;

}publicString getStoreDesc() {returnstore_desc;

}public voidsetStoreDesc(String store_desc) {this.store_desc =store_desc;

}

}

说明:这里创建两个实体类的原因,返回的xml文件套了两层(即和),其解析xml要的是和的值,解析的时候转换成实体类要一层一层;

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131398.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Adobe dreamweaver CS6小白入门教程「建议收藏」

    Adobe dreamweaver CS6小白入门教程「建议收藏」1.界面认识2.创建站点:(针对复杂网站使用)站点是一系列文档的组合,这些文档通过各种链接建立逻辑关联。是管理网页文档场所。DWCS6是一个站点创建和管理工具,使用它不仅可以创建单独文档,还可以创建完整的站点。创建网页:新建。3.管理站点的操作:打开站点、编辑站点、删除站点、复制站点、导入导出站点4.管理站点中的文件1.创建文件夹和文件…

    2022年6月12日
    49
  • DVD区码划分(一区 二区 三区 四区 五区 六区 全码区)

    DVD区码划分(一区 二区 三区 四区 五区 六区 全码区)美国电影协会为制定区域码划分了六个地区,这六区的域码分别是第一区 Region1 美国、加拿大、东太平洋岛屿,第二区 Region2 日本、西欧、北欧、埃及、南非、中东,第三区 Region3 台湾、

    2022年7月4日
    1.4K
  • awk数组详解、实战

    awk数组详解、实战1.其它编程语言数组的下标一般从0开始,awk中数组下标默认从1开始,也可以从0开始设置:2.在awk中,元素的值设置为"空字符串"是合法的,所以不能用元素值是否为空,判断该元素

    2022年7月3日
    30
  • ubuntu16.04下安装QQ教程「建议收藏」

    最近换工作,公司完全用的是Linux系统,目前不习惯,感觉别扭;后面熟悉就好了,由于工作需要,要安装QQ;有两个办法:1.在ubuntu下安装virtualbox虚拟机,然后再用win系统,再安装QQ;2.在ubuntu下安装winQQ;由于我安装virtualbox虚拟机,出现虚拟机打不开的情况,能力问题,暂还未解决,就用了第二种方法;在网上找到安装教程如下:参考网址:ht…

    2022年4月11日
    40
  • pycharm是下载社区版本的还是专业版本_pycharm教育版和社区版功能一样吗

    pycharm是下载社区版本的还是专业版本_pycharm教育版和社区版功能一样吗PyCharm是一种PythonIDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。PyCharm最常用的两个版本就是社区版和专业版,这两个版本区别如下:专业版和社区版的区别除了这两版本之外,还有一个版本就是教育版,这三个有什么区别呢?1.收费不同首先就是三者的收费不同:专业版是收费的,另外两个是免费的。2.功能不同pyCharm专业版是功能…

    2022年8月25日
    4
  • 双机热备方案设计

    1什么是双机热备方案  双机热备就是使用互为备份的两台服务器共同执行同一服务,其中一台主机为工作机(PrimaryServer),另一台主机为备份机(StandbyServer),保证系统不间断的运行。双机热备软件就是实现上述功能的软件产品。双机热备针对的是服务器的临时故障所做的一种备份技术,通过双机热备,来避免长时间的服务中断,保证系统长期、可靠的服务。  企事业机构的信息化建设已…

    2022年4月6日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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