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

一、创建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接口测试测试完毕!

相关推荐