1. 程式人生 > >WebService釋出與訪問並通過Postman測試WebService介面

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介面測試測試完畢!