wsimport命令生成webservice客户端

一、排除问题

1、今天接到一个任务,我做为客户端,调用服务端接口,通过生成wsdl文件的方式,所以用了wsimport命令,后台提示不支持soap编码

在这里插入图片描述

2、我看网上说,jdk1.7及以后就不在支持,于是我下了一个jdk1.6版本,结果还是有问题
在这里插入图片描述

二、解决问题

1、在网上看到说需要下载axis1.4版本的jar包,下载地址

在这里插入图片描述
2、下载到本地以后需要创建一个可以运行的.bat文件做一些简单配置

-- 这个是刚才下载的axis文件路径
set axis_lib=F:\axis-bin-1_4\axis-1_4\lib
set java_cmd=java -Djava.ext.dirs=%axis_lib%
-- 这个是webservice服务端地址
set axis_servlet=xxx/webservice/Service.jws?wsdl
-- 【-p】是生成文件的包路径,不加会有一个默认的,推荐加上,生成文件的同时也会把包路径一起生成。 
%java_cmd% org.apache.axis.wsdl.WSDL2Java -p webservice -u %axis_servlet%

3、双击bat,就会出现下面这些文件
在这里插入图片描述
拷贝到项目中
在这里插入图片描述
如你所见,方法报错了,是因为项目中没有相应的jar包。
如果是springboot项目,很简单,只需要引入相关依赖,

   <dependency>
        <groupId>org.apache.axis</groupId>
        <artifactId>axis</artifactId>
        <version>1.4</version>
    </dependency>
    <dependency>
        <groupId>javax.xml</groupId>
        <artifactId>jaxrpc</artifactId>
        <version>1.1</version>
    </dependency>
    <dependency>
        <groupId>wsdl4j</groupId>
        <artifactId>wsdl4j</artifactId>
        <version>1.6.1</version>
    </dependency>
    <dependency>
        <groupId>commons-discovery</groupId>
        <artifactId>commons-discovery</artifactId>
        <version>0.2</version>
    </dependency>

也可以不引入pom文件,直接手动导入jar包
在这里插入图片描述

4、编写调用服务端代码

        String wsdl = "xxx/webservice/Service.jws?wsdl";
        try {
            org.apache.axis.client.Service service = new org.apache.axis.client.Service();

            URL url=new URL(wsdl);
            ServiceSoapBindingStub stub = new ServiceSoapBindingStub(url,service);

            // 有些webservice需要登录,登陆后才能进行一些操作,这个需要设置如下两个参数:
            //1、 超时时间
            stub.setTimeout(1000 * 10);
            //2、 次数设置true,登录后才能保持登录状态,否则第二次调用ws方法时仍然会提示未登录。
            stub.setMaintainSession(true);
            //目标方法
            String s = stub.contractService(txt());

            System.out.println(s);
            System.out.println("====================== webservice调用结束 ======================");   
        } catch (AxisFault | MalformedURLException axisFault) {
            axisFault.printStackTrace();
        } catch (RemoteException e) {
            e.printStackTrace();
        }         

到这里就解决了。

这里做一些扩展,通常传入的参数都是xml格式的,有一种方法,在格式转换的时候,后台做字符拼接,大概是下面这种方式,但是我们传入的时候一定要包含头部信息也就是“<?xml version='1.0' encoding='UTF-8'?>”
其他标签都是看调用的服务端,他们的格式是如何规定的。

    public String test() {
        StringBuffer xmlnodes = new StringBuffer();
            xmlnodes.append("<?xml version='1.0' encoding='UTF-8'?>");
            xmlnodes.append("<ROOT>");
            xmlnodes.append("<STAFF_LIST>");
            xmlnodes.append("<OUTSOURCING_ID>"+"?"+"</OUTSOURCING_ID>\n" +
                    "\t<OUTSOURCING_DEPT_NAME>"+"?"+"</OUTSOURCING_DEPT_NAME>\n" +
                    "\t<OP_TYPE>"+"?"+"</OP_TYPE>\n");
            xmlnodes.append("</STAFF_LIST>");
            xmlnodes.append("</ROOT>");
        return xmlnodes.toString();
    }

有不对的地方还望指点,若能获得您的建议,倍感荣幸。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要生成一个WebService客户端,可以按照以下步骤进行: 1. 打开Eclipse或其他IDE,创建一个新的Java项目。 2. 在项目中创建一个新的包,用于存放WebService客户端相关的类。 3. 在该包中创建一个新的Java类,用于实现WebService客户端。 4. 导入WebServiceWSDL文件,可以通过在Eclipse中使用“Web Services Explorer”视图或使用命令行工具wsimport来完成。 5. 根据WSDL文件生成客户端代码,可以使用Eclipse中的“Web Services Explorer”视图或使用命令行工具wsimport来完成。 6. 在客户端代码中实例化WebService客户端,并调用WebService提供的方法。 以上是生成WebService客户端的基本步骤,具体实现过程可能会因为不同的IDE或工具而有所不同。 ### 回答2: WebService 是一种基于 Web 的应用程序接口,可以实现不同计算机之间的交互和通信,通过 Web 服务,可以在不同的操作系统和编程语言之间进行交流,使得应用程序的开发变得更加简单便捷。在这样的背景下,idea作为一款著名的开发工具,也加入了WebService的支持,便于开发人员对Web服务进行开发和维护。 在idea中生成WebService客户端,要经过以下几步: 1.找到Web Service的WSDL文档:WSDL文档描述了Web服务提供商支持的所有操作和数据类型。可以通过一个 URL 访问此文档,或者从Web服务提供商那里获得它。 2.在idea中添加Web Service:打开 Idea,单击“File”菜单,然后单击“New Project",在“New Project”对话框中,选择“Java Enterprise”,单击“Web Service Client”并单击“Next”。在“New Web Service Client”对话框中,输入 Web 服务的 URL 地址,然后单击“Finish”按钮。 3.生成客户端代码:Idea 会自动解析 WSDL 文档,并在稍后的步骤中使用它。在添加Web服务后,第一件要做的事情是生成客户端代码。在这一步,IDE 会根据 WSDL 文档生成一个客户端代码库,用于调用 Web 服务提供商的操作。在浏览客户端代码之前,IDE 会解析 WSDL 文档,以确认是否可以正确地访问 Web 服务。 4.测试Web服务:创建好Web服务客户端之后,可以使用测试代码调用 Web 服务。可以通过 Idea 的 Test Page 进行测试,或者创建一个 Java 应用程序或 servlet,并调用 Web 服务。 总之,在idea中生成WebService客户端非常容易,只需要依次执行以上步骤即可。Web服务的普及使得不同计算机之间的交互和通信变得更加简单便捷,而idea作为开发工具,则为我们提供了非常方便的支持。 ### 回答3: Web服务客户端是一种用于访问Web服务的应用程序。创建Web服务客户端可以利用现有的IDE或手动创建。IDE可以自动生成Web服务客户端,但是如果使用手动方式,则需要进行一些步骤。 首先,需要确定要连接的Web服务地址,WSDL文件的位置以及Web服务客户端所需的参数和返回数据。创建Web服务客户端的主要步骤如下: 1.创建Web服务客户端项目:可以使用现有的IDE,如Eclipse或NetBeans,创建一个新项目,选择Web服务客户端项目类型。 2.导入WSDL文件:必须将WSDL文件导入到Web服务客户端项目中,以便可以生成客户端代码。 3.生成客户端代码:可以使用IDE自动生成客户端代码,或手动创建客户端代码。使用IDE自动生成客户端代码可以大大简化工作量。 4.构建Web服务客户端:通过使用生成客户端代码,可以构建Web服务客户端。可以使用这个客户端来向Web服务发送请求并接收响应。 在使用Web服务客户端之前,需要了解Web服务的概念和基本原理。Web服务是一种可以利用网络进行互联的软件应用程序,其可通过标准协议(例如SOAP和REST)在互联网上进行通信。Web服务客户端是一种用于访问Web服务的应用程序,它可以通过发送请求并接收响应来访问Web服务。 总之,创建Web服务客户端需要一些准备工作,如确定Web服务地址、WSDL文件位置和所需参数。IDE可以自动生成客户端代码,或者手动创建客户端代码。使用生成客户端代码可以构建Web服务客户端,并可以通过客户端访问Web服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值