WebService发布与访问并通过Postman测试WebService接口

时间:2024-04-09 11:02:24

一、创建webService服务。

采用appache提供的cxf开发webService服务,需要引入如下几个包

WebService发布与访问并通过Postman测试WebService接口

1、创建工程test


创建实体类

package hu.liu;

import lombok.Getter;
import lombok.Setter;

/**
 * @author 作者:David
 * @version 创建时间:2018年3月5日 下午3:09:46
 * 类说明 Info.java
 */
@Getter
@Setter
public class Info
{
    private Integer id;
    
    private String key;
    
    private String result;
}

创建接口:

package hu.liu;

import java.util.Map;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

/**
 * @author 作者:David
 * @version 创建时间:2018年3月5日 下午2:23:36
 * 类说明 IWebService.java
 */
@WebService 
public interface IWebService
{
    @WebMethod
    public String excute(@WebParam(name="param") String s);
    
    @WebMethod
    public String testString(Info param);
}


实现IWebService接口:

package hu.liu;
import java.util.Map;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
/**
 * @author 作者:David
 * @version 创建时间:2018年3月5日 下午2:25:14
 * 类说明 WebServiceImp.java
 */
@WebService 
public class WebServiceImp implements IWebService
{
    @WebMethod
    @Override
    public String excute(@WebParam(name="param") String param)
    {
        System.out.println(param);
        Gson json = new Gson();//需要引入Gson包
        Info info = json.fromJson(param, new TypeToken<Info>(){}.getType());
        Integer id = info.getId();
        System.out.println(id);
        return "hello world!";
    }

    @WebMethod
    @Override
    public String testString(Info param)
    {
        return "dddd";
    }
}

创建webService发布启动类:

package hu.liu;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
/**
 * @author 作者:David
 * @version 创建时间:2018年3月5日 下午2:25:48
 * 类说明 Launcher.java
 */
public class Launcher
{
    public static void main(String[] args)
    {
        JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
        factory.setServiceClass(IWebService.class);  
        // 发布接口  
        factory.setAddress("http://localhost:9000/ws/" + IWebService.class.getSimpleName());  
        factory.setServiceBean(new WebServiceImp());  
        factory.create();
    }
}

至此一个简单的webService服务就已经发布成功了。

通过浏览器访问http://localhost:9000/ws/IWebService?wsdl 可以看到如下信息:

WebService发布与访问并通过Postman测试WebService接口



以上标注红色的是方法名及对应的参数。

二、创建客户端访问webService。

创建客户端工程,并引入与服务相同的包,且创建IWebService接口,接口的目录和服务端的一样,且方法一样。可以将服务端的接口打成jar包提供给客户端。

客户端调用代码如下:

package hu.liu;
import java.security.NoSuchAlgorithmException;
import java.util.Date;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import com.google.gson.Gson;
/**
 * @author 作者:David
 * @version 创建时间:2018年1月5日 下午3:59:37
 * 类说明 TestImp1.java
 */
public class TestImp1
{
    public static void main(String[] args) throws NoSuchAlgorithmException
    {
        JaxWsProxyFactoryBean  factoryBean=new JaxWsProxyFactoryBean();   
        /*factoryBean.getInInterceptors().add(new LoggingInInterceptor());   
        factoryBean.getOutInterceptors().add(new LoggingOutInterceptor());  */ 
        factoryBean.setServiceClass(IWebService.class);   
        factoryBean.setAddress("http://localhost:9000/ws/IWebService?wsdl");   
        IWebService webService=(IWebService) factoryBean.create();   
        Gson gson = new Gson();
        Info info = new Info();
        info.setId(123);
        info.setResult("中国");
       /*sb.append("id=").append(info.getId());
        sb.append("&result=").append(info.getResult());
        info.setKey(new MD5Util().hashCode(sb.toString()));*/
        String s = gson.toJson(info);
        System.out.println(webService.excute(s));
    }
}

执行后如果没有意外应该有如下信息

客户端打印信息:4444444444444

服务端打印信息:123

至此整个webService从服务发布到客户端调用整个过程梳理完毕。

当然了,很多人在开发的时候只是负责开发服务端,不关心客户端的情况,这种时候如何通过webService测试软件进行接口测试呢。目前我使用的是Postman,谷歌提供的一个接口测试插件。

现在通过Postman测试以上发布的接口excute接口如下:

1、打开Postman界面如下:

设置Content-Type=text/xml

WebService发布与访问并通过Postman测试WebService接口


设置body请求调用的方法excute及对应的参数param

WebService发布与访问并通过Postman测试WebService接口

请求结果如下:

WebService发布与访问并通过Postman测试WebService接口

至此通过Postman进行webService接口测试测试完毕!