調用webService學習小結

  這段時間項目進行到了最後時刻,可是還有不少需求沒有搞清楚,眼看deadline愈來愈近,壓力也愈來愈大。如今個人主要工做是將別人開發好的一個系統給加載到咱們系統中,使用的方法是經過webService調用那個系統的登陸接口。我對webService這個技術知之甚少,因此,這段時間經過各類方法狂補webService知識,剛開始無頭蒼蠅似的亂撞,看到什麼有關的就開始學,只是憑着腦子在想着學,沒有動手,致使越學越糊塗。這周剛開始的時候仔細想了想前段時間學習方式,感受不太對,因而準備重新開始,從發佈一個本地webservice服務,經過調用發佈成功的本地webService進行測試,測試好多種調用方式,總算是會調用webService服務了。在這裏我想說以前漫無目的的學不是一點用也沒有,還算是瞭解了一些webService的知識,畢竟學了那麼長時間,怎麼會沒有收穫。下面將調用webService接口的方法記錄下來,便於之後複習。java

  在網上查了好多資料,不少人分享的調用webService知識都很不錯,我也是根據這些學會的webService,大體上以下:  web

  一、經過axis實現發佈本地webService並調用。apache

  發佈本地webService服務:首先新建一個web項目(通常都是動態的),在src下新建一個java類,做爲webService服務類,我建的類以下:網絡

package com.lsk.ws;

public class PrintService {
	
	public void print(String str){
		
		System.out.println("Hello,this is my first webservice!");
		System.out.println(str);
		
	}
	
	public String lsk(String params1,String params2,String params3){
		
		String lskResult = params1 + "&" + params2 + "&" + params3;
		return lskResult;
		
	}
}

  print方法是爲了測試無返回值但有打印的webService發放返回結果,結果什麼都不返回。lsk這個方法測試返回正常結果。建好這個文件以後,而後右擊選擇webService 點擊creat webService,而後的操做能夠在網上找到,在這裏再也不贅述。學習

  調用發佈的這個本地webService服務:在任意地方寫個測試類,內容以下:測試

String endpoint = "http://localhost:8080/WebService/services/PrintService";
        try { Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(endpoint); QName qn = new QName("urn:PrintService", "lsk"); call.setOperationName(qn); String result = (String) call.invoke(new Object[] {"111","222","333"}); // 傳參  System.out.println(result); /*QName qn = new QName("urn:PrintService", "print"); call.setOperationName(qn); call.invoke(new Object[] {"111"}); // 傳參*/ } catch (Exception e) { e.printStackTrace(); }

 

  上述測試方法用的是axis1.4,測試以前導入axis1.4的jar包。this

  二、經過xFire調用webService,還以本機發布的webService爲例。spa

  新建java project,首先導入xFirejar包,而後新建一個interface,該接口只須要生命須要調用的webService方法,如:code

package com.lsk.webClient;

public interface IPrint { public void print(String str); public String lsk(String x1,String x2,String x3); }

 

  而後,寫個測試類和方法測試調用webService,以下:orm

Service srModel = new ObjectServiceFactory().create(IPrint.class);
        XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());//建立工廠實例
        String helloURL = "http://localhost:8080/WebService/services/PrintService"; try { IPrint IPrintService = (IPrint) factory.create(srModel, helloURL); String params1 = "mmm"; String params2 = "nnn"; String params3 = "ddd"; IPrintService.print("哈哈哈哈哈哈"); System.out.print(IPrintService.lsk(params1, params2, params3)); } catch (MalformedURLException e) { e.printStackTrace(); }

  這是xFire調用webService的一種方法,我以爲這種方法與wsdl2java生成客戶端相似。

  下面說一種調用網絡上免費的webService服務的方法:

public static void main(String[] args) throws Exception {
        
        String endpoint = "http://webservice.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl"; String operationName = "getWeatherbyCityName"; Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(endpoint); call.setOperationName(new QName("http://WebXml.com.cn/",operationName)); call.addParameter( new QName("http://WebXml.com.cn/","theCityName"), org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN); call.setReturnClass(java.lang.String[].class); call.setUseSOAPAction(true); call.setSOAPActionURI("http://WebXml.com.cn/"+"getWeatherbyCityName"); String[] res = null; res=(String[]) call.invoke(new Object[]{"鄭州"}); for(String str:res){ System.out.println(str); } }

  至此,對調用webService基本上算是瞭解了,還不能說精通,還需繼續努力,人畢竟須要時刻進步,況且咱們偉大的攻城獅。

相關文章
相關標籤/搜索