WebService 创建接口与连接接口

首先想创建Webservice和调用Webservice需要以下几个包
在这里插入图片描述
所需要的jar在最底下

1.先创建一个class作为服务端

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

/**
 * @author xiaoxiang
 * @date
 */

@WebService
public class webServiceController {

    /** 供客户端调用方法  该方法是非静态的,会被发布
     * @param name  传入参数
     * @return String 返回结果
     * */
    @WebMethod(operationName = "getValue")
    public String getValue(@WebParam(name = "name") String name){
        return "欢迎你! "+name+"-------------";
    }

    /**
     * 方法上加@WebMentod(exclude=true)后,此方法不被发布;
     * @param name
     * @return
     */
    @WebMethod(exclude=true)
    public String getHello(String name){
        System.out.println("==============");
        return "你好! "+name;
    }

    /** 静态方法不会被发布
     * @param name
     * @return
     */
    public static String getString(String name){
        return "再见!"+name;
    }


    //通过EndPoint(端点服务)发布一个WebService
    public static void main(String[] args) {
     /*参数:1,本地的服务地址;
           2,提供服务的类;
      */
        Endpoint.publish("http://192.168.1.155:8085/Service/ServiceHello", new webServiceController());
        System.out.println("发布成功!");
        //发布成功后 在浏览器输入 http://192.168.1.155:8085/Service/ServiceHello?wsdl
    }
}

附图:

先把项目跑起来(也可以不跑),然后执行main方法。效果如下:
在这里插入图片描述
这样就说明你的WebService接口已经创建好了

然后在浏览器地址中访问你设置的地址后面加上?wsdl
例:http://192.168.1.155:8085/Service/ServiceHello?wsdl
执行结果
在这里插入图片描述
出现这个说明你的webservice接口已经调通了

2.调用WebService接口
前面的该铺垫的都已经铺铺垫好啦
剩下的就交给代码执行啦
代码如下:

import java.net.HttpURLConnection;
import java.net.URL;

import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.encoding.XMLType;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

/**
 * @author xiaoxiang
 * @date 2019/9/27 16:45
 */
public class text {

    public static void main(String[] args) throws Exception{
        String endpoint = "http://192.168.1.155:8085/Service/ServiceHello?wsdl";
        HttpURLConnection connection = (HttpURLConnection) new URL(endpoint).openConnection();
        if(HttpURLConnection.HTTP_OK == connection.getResponseCode()){//测试是否通了
            try {
                //直接引用远程的wsdl文件 //以下都是套路
                Service service = new Service();
                Call call = (Call) service.createCall();
                call.setTargetEndpointAddress(new URL(endpoint));
                /**注意这里,要设置Namespace
                 * new QName(namespace,WSDL里面描述的接口名称)*/
                call.setOperationName(new QName("http://text/","getValue"));//WSDL里面描述的接口名称
                call.addParameter("name", XMLType.XSD_STRING, ParameterMode.IN);//接口的参数
                call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//设置返回类型
                Object result = call.invoke(new String[]{"789"});
                //给方法传递参数,并且调用方法
                System.out.println("result is :"+result);
            }
            catch (Exception e) {
                System.err.println(e.toString());
            }
        }
    }
}

附图:
在这里插入图片描述
提醒一下:代码中的
(“http://text/”)的就是你访问路径后的到的namespace;
(“getValue”)是你要调用的方法名;
(”name“)是方法中的参数名字;
服务器端的参数一定要写@WebParam(name = “name”)不然的话接不到参数
(”789“)就是你要穿的参数对应的内容啦;
如果有多个参数的话 call.addparameter就可以有多个,参数内容的话就以逗号分隔开就行啦
然后执行这个main方法就能得到Webservice返回的结果啦
在这里插入图片描述

上面是通过url来访问接口的,还有个是在本地项目内的

这个和上面没上面大的区别 第一步都是一样的

首先新建一个web项目 然后目录是这样的
在这里插入图片描述
JwsServiceHello.java这个就是服务端java

package service;


import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

/**
* Title: ServiceHello
* Description: 基于jdk1.6以上的javax.jws 发布webservice接口
                @WebService - 它是一个注解,用在类上指定将此类发布成一个ws。
                Endpoint – 此类为端点服务类,它的方法publish用于将一个已经添加了@WebService注解
                对象绑定到一个地址的端口上。 
* Version:1.0.0  
* @author panchengming
 */
@WebService
public class JwsServiceHello {
	 /** 供客户端调用方法  该方法是非静态的,会被发布
     * @param name  传入参数
     * @return String 返回结果
     * */
	@WebMethod(operationName = "getValue1")
    public String getValue1(String name){
        return "欢迎你! "+name;
    }

    /**
     * 方法上加@WebMentod(exclude=true)后,此方法不被发布;
     * @param name
     * @return
     */
    @WebMethod(exclude=true)  
    public String getHello(String name){
        return "你好! "+name;
    }

    /** 静态方法不会被发布
     * @param name
     * @return
     */
    public static String getString(String name){
        return "再见!"+name;
    }


     //通过EndPoint(端点服务)发布一个WebService
    public static void main(String[] args) {
     /*参数:1,本地的服务地址;
           2,提供服务的类;
      */
     Endpoint.publish("http://192.168.1.155:7071/Service/ServiceHello1", new JwsServiceHello());
     System.out.println("发布成功!");
     //发布成功后 在浏览器输入 http://192.168.1.155:7071/Service/ServiceHello?wsdl
    }
}

直接运行main方法就行啦
在这里插入图片描述
然后右键src 找到web service client

在这里插入图片描述
下一步
在这里插入图片描述
然后点击next就行啦 随后会生成这些文件在这里插入图片描述
然后新建一个class 测试用

import ws.JwsServiceHello;
import ws.JwsServiceHelloService;


public class text {
	 public static void main(String[] args) throws Exception {
         //调用webservice
        JwsServiceHello hello=new JwsServiceHelloService().getJwsServiceHelloPort();
        String name=hello.getValue("panchengming");
        System.out.println(name);
		 
    }
}

在这里插入图片描述
运行就可以啦
在这里插入图片描述

所需要的jar;提取码:wosg

ok 就到这里啦,上面的是通过路径来访问接口,下面的是通过本地生成对应的接口然后去使用,看个人需求然后去使用;
有哪里写的不好的还望多多包含

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值