WebService釋出與訪問並通過Postman測試WebService介面
一、建立webService服務。
採用appache提供的cxf開發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。
建立客戶端工程,並引入與服務相同的包,且建立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
設定body請求呼叫的方法excute及對應的引數param
請求結果如下:
至此通過Postman進行webService介面測試測試完畢!