用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");
}