1. 程式人生 > >用axis生成webservice服務端和客戶端程式碼

用axis生成webservice服務端和客戶端程式碼

最近,接手了公司java webservice部分的開發,攢了一些經驗,為了避免後續把它丟到太空去了,現抽時間把過程記錄下來。

1、webservice服務端

1)新建web project

2)新建webservice 


3)選擇對應的wsdl檔案直接生成服務端程式碼

4)webservice的地址在web.xml配置檔案url-pattern節點中

2、webservice客戶端

客戶端支援兩種方式,如果wsdl中不存在節點包含的關係(就是wsdl檔案中一部分的報文結構在xsd檔案中定義),就採用第一種,否則,建議第二種。

1)第一種呼叫方式:

String ss = "";
try {
SAXReader reader = new SAXReader();
InputStream ifile = new FileInputStream("C:\\auto.xml");
InputStreamReader ir = new InputStreamReader(ifile, "GBK");
Document document = reader.read(ir);
Element root = document.getRootElement();


ss = root.asXML();
System.out.println(ss);
} catch (Exception e) {
e.printStackTrace();
}


String url = "http://192.168.3.213:7001/com.infotech.sealprove/services/autoProve?wsdl";
Client client = null;
try {
client = new Client(new URL(url));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
Object[] results;
String response = "";
try {
results = client.invoke("autoProve", new Object[] { ss });
response = (String) results[0];
} catch (Exception e) {
e.printStackTrace();
}

client是用的xfire-all-1.2.6.jar包裡的型別,需要引用xfire相關的jar包

2)第二種呼叫方式

採用axis生成客戶端程式碼,以下是生成過程。




以下就直接按預設下一步即可。

新建完工程之後,將對應的wsdl拷貝到工程src專案,右鍵wsdl檔案選擇webservice--generate client選單



選擇對應的wsdl檔案就可以生成客戶端的程式碼了。

生成之後,用以下的程式碼完成對和服務端的介面通訊:

AutoProveSOAPQSService1 client=new AutoProveSOAPQSService1Locator();
AutoProveService service = null;
try {
service = client.getAutoProveSOAPQSPort1();
} catch (ServiceException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
AutoProveRequest sAutoProveRequest=new AutoProveRequest ();

AutoProveResponse msg = null;
try {
msg = service.autoProve(sAutoProveRequest);
System.out.println(msg.toString());
System.out.println(msg.getFAULTCODE());
System.out.println(msg.getFAULTSTRING());
} catch (RemoteException e) {
// TODO Auto-generated catch block

e.printStackTrace();
}
if(msg.getFAULTCODE().equals("00000")){
System.out.println("success");
} else {
System.out.println("fail");
}