服務端(Java):
package com.ningshe.module.user.service;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
import com.jfinal.plugin.activerecord.Db;
@WebService
public class WebServiceDemo {
@WebMethod(operationName = "getMsg")
@WebResult(name = "ret")
public String getMsg() {
return "獲取消息";
}
@WebMethod(operationName = "getUserCount")
@WebResult(name = "result")
public Long getUserCount() {
return Db.queryLong("SELECT COUNT(*) FROM role_user");
}
@WebMethod(operationName = "updateOrder")
@WebResult(name = "result")
public String updateOrder(@WebParam(name = "reqParams") String reqParams) {
System.out.println(reqParams);
return reqParams;
}
@WebMethod(operationName = "createOrder")
@WebResult(name = "result")
public String createOrder(@WebParam(name = "reqParams") String reqParams) {
System.out.println(reqParams);
return reqParams;
}
public static void main(String[] args) {
// 發佈WebService服務
Endpoint.publish("http://192.168.2.22:2019/ws_server/mallsrv", new WebServiceDemo());
System.out.println("發佈WebService服務成功...");
// 瀏覽器訪問 http://localhost:2019/ws_server/mallsrv?wsdl
}
}
客戶端(Java):
先用JDK工具wsimport,拉取遠程代碼,如:
wsimport -keep http://192.168.2.22:2019/ws_server/mallsrv?wsdl
測試代碼:
package test;
import com.ningshe.module.user.service.WebServiceDemo;
import com.ningshe.module.user.service.WebServiceDemoService;
public class TestWs {
public static void main(String[] args) {
WebServiceDemoService factory = new WebServiceDemoService();
WebServiceDemo servicePort = factory.getWebServiceDemoPort();
System.out.println(servicePort.getMsg());
System.out.println(servicePort.getUserCount());
System.out.println(servicePort.updateOrder("<xml><o>D8329048293084032<o/><xml/>"));
// JDK 命令
// wsimport -keep [url]
}
}
客戶端(Node.js)
先安裝依賴:npm i soap
var soap = require('soap');
var url = 'http://192.168.2.22:2019/ws_server/mallsrv?wsdl';
var args = { reqParams: '<xml><onumber>D487347293749823</onumber></xml>' };
var soaptest = function() {
soap.createClient(url, function(err, client) {
client.getMsg(function(err, result) {
console.log(result);
});
client.getUserCount(function(err, result) {
console.log(result);
});
client.createOrder(args, function(err, result) {
console.log(result);
});
});
};
soaptest();
特別注意:在服務器環境,啓動Web Service服務時,可能報IP綁定異常,可以嘗試綁定內網的IPv4地址,然後用公網IP測試訪問!我這裏貌似就是阿里雲的內網IP地址。