java 调用.net webservice axis2_java利用axis2调用.net写的webservice,传递自定义的实体类参数...
利用axis2可以很方便的自動生成客戶端代碼,同時對復雜參數(shù)類型的傳遞也很方便,本文的服務端以.net開發(fā),有一個自定義的實體類作為參數(shù),客戶端用java,簡單介紹一下利用axis2的wsdl2java自動生成客戶端代碼,并調(diào)用webservice的過程。
服務端說明:
服務URL:http://localhost:1057/AudioServ.asmx
默認命名空間:http://tempuri.org/
方法:AudioInfoCollection
參數(shù)是一個自定義的實體類,類名:ParameterClass,參數(shù)名:param
服務端xml如下:
POST /AudioServ.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/AudioInfoCollection"
string
string
string
string
string
string
string
string
string
string
string
string
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
boolean
返回bool類型
Axis2準備:
1、下載 Axis2-1.6.2(版本不固定,本文使用的是此版本),解壓到相應目錄,本文的目錄統(tǒng)一為:D:\ JavaExternalLib\Axis2-1.6.2
2、配置環(huán)境變量,新增AXIS2_HOME,值為axis2的解壓目錄:D:\JavaExternalLib\Axis2-1.6.2
3、使用axis2的wsdl2java工具自動生成客戶端代碼
wsdl2java.bat工具在axis2安裝目錄下的bin目錄中,D:\JavaExternalLib\Axis2-1.6.2\bin
打開Windows控制臺(win+r 輸入cmd),輸入命令:
%AXIS2_HOME%\bin\wsdl2java -uri http://localhost:1057/AudioServ.asmx?wsdl -p client -s -o client
-uri:指定wsdl文件的路徑,本地路徑或者網(wǎng)絡路徑都可以
-p:生成java類的包名
-o:生成文件的放置的相對目錄
執(zhí)行成功后顯示:
Using AXIS2_HOME: ? D:\JavaExternalLib\Axis2-1.6.2
Using JAVA_HOME: ? ?C:\Program Files\Java\jdk1.8.0
Retrieving document at 'http://localhost:1057/AudioServ.asmx?wsdl'.
log4j:WARN No appenders could be found for logger (org.apache.axis2.description.WSDL11ToAllAxisServicesBuilder).
log4j:WARN Please initialize the log4j system properly.
在控制臺的當前目錄下,生成了client目錄,在client\src\client目錄下,有一個AudioServStub.java文件,該文件即生成的客戶端代碼,負責調(diào)用webservice,可以直接使用。
調(diào)用:
eclipse新建一個java項目,包名client,將自動生成的客戶端類AudioServStub.java添加到client包,為了省事,將axis2主目錄下lib里面的所有jar包都應用到項目中, 新建類:CallWebService:
package client;
public class CallWebService
{
public static void main(String[] args)
{
try
{
System.out.println("Begin....");
callServ();
System.out.println("End...");
}
catch ( Exception ex)
{
System.err.println(ex.toString());
}
}
public static void callServ()
{
try
{
/* wsdl2java.bat命令生成的Stub類將WebService方法的參數(shù)都封裝在了相應的類中,
* 類名為方法名
* */
AudioServStub.ParameterClass param = new AudioServStub.ParameterClass();
param.setCallSerialMain("122388048");
param.setRecordLisQuestion("01");
param.setStartDate("20160425133100");
param.setUserCityCode("123");
param.setUserCityName("chengde");
param.setRecordLisStaffId("AJF00033");
param.setRecordLisDate("20160425133100");
param.setCallSerialNo("20160425133100001");
param.setUserCredit("sdsds");
param.setRecordLisContact("01");
param.setRecordLisRemark("test");
param.setAudioFilePath("xxxxxx");
AudioServStub ass = new AudioServStub();
AudioServStub.AudioInfoCollection aaAudioInfoCollection = new AudioServStub.AudioInfoCollection();
//設置參數(shù)
aaAudioInfoCollection.setParam(param);
//調(diào)用
if(ass.audioInfoCollection(aaAudioInfoCollection).getAudioInfoCollectionResult())
{
System.out.println("Success...");
}
else
{
System.out.println("Error...");
}
}
catch (Exception ex)
{
System.err.println(ex.toString());
}
}
}
方法callServ完成調(diào)用
總結
以上是生活随笔為你收集整理的java 调用.net webservice axis2_java利用axis2调用.net写的webservice,传递自定义的实体类参数...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: chrome java上传文件_spri
- 下一篇: java中使用递归方法删除_删除和拷贝文