1. 程式人生 > >webservice 菜鳥探索之旅

webservice 菜鳥探索之旅

unable lib poi style 目錄 使用 void disable 通過

項目背景

  接到的任務是通過調用其他平臺廠商提供的webservice接口來獲取他們的圖片數據把圖片下載下來錄入我司平臺。之前沒有接觸過webservice,所以開始了這次webservice的菜鳥之旅。

一.首先去百度查了查簡單搭建了一個webservice的服務端和客戶端的小demo,用來了解它的工作流程

服務端搭建

1.新建一個java項目,目錄如下

技術分享圖片

2.新建個類,加註解@WebService,主要內容如下

package webservice_serverDemo;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint; @WebService public class Test { /** 供客戶端調用方法 該方法是非靜態的,會被發布 * @param name 傳入參數 * @return String 返回結果 * */ public String getValue(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://127.0.0.1:8080/Test", new Test()); System.out.println("發布成功!"); //發布成功後 在瀏覽器輸入 http://localhost:8080/Test?wsdl } }

3.運行主方法,控制臺顯示發布成功

技術分享圖片

4.瀏覽器輸入 http://localhost:8080/Test?wsdl 可以看到生成的wsdl文件,服務端搭建完畢

技術分享圖片

客戶端搭建

1.新建一個java工程

2.點擊工程右鍵>New>Other>Web service client>填寫wsdl地址如下圖(確保服務端不要關閉,瀏覽器訪問地址能看到xml)也可以填寫的是一個wsdl文件的路徑

技術分享圖片

finish之後就會發現在src下生成了客戶端的文件夾和java類,這時候就可以在客戶端調用接口了

技術分享圖片

調用一下試試

package webservice_serverDemo;

import java.rmi.RemoteException;
import java.util.Iterator;

import javax.xml.rpc.ServiceException;

public class Hello {
    public static void main(String []args) throws RemoteException, ServiceException{
        TestServiceLocator test = new TestServiceLocator();
        Test ports = test.getTestPort();
        System.out.println(ports.getValue("小娜"));
    }

}

控制臺輸出,可以看到有一個警告是因為缺少mail.jar和activation.jar,可以自己下載,不加也沒有特別大的影響

技術分享圖片

回歸到項目

  通過上面的小demo可以看出,eclipse能根據wsdl自動生成客戶端來調用,非常簡單。but,通過平臺廠商反饋的wsdl文件發現,由於他們系統十分老舊,生成的wsdl無法用這種方法生成客戶端,於是換了一種方法,使用axis1.4生成客戶端

1.下載axis-bin-1_4.zip jar包,解壓

2.進入lib目錄下打開cmd 運行

D:\soft\axis-1_4\lib>java -Djava.ext.dirs=D:\soft\axis-1_4\lib org.apache.axis.wsdl.WSDL2Java -o D:\zhuhai -p com.ws D:\soft\axis-1_4\RequestService.wsdl

//java -Djava.ext.dirs=${lib的目錄} org.apache.axis.wsdl.WSDL2Java -o${代碼輸出路徑} -p${package名} ${wsdl的路徑(可以是絕對路徑或者url)}

會報一個這個警告,沒有關系,上面提過

- Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.

3.去${代碼輸出路徑}裏可以找到生成的客戶端

webservice 菜鳥探索之旅