一.webservice调用类
package com.tbl.common.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.tbl.common.config.StaticConfig;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.endpoint.dynamic.DynamicClientFactory;
import org.apache.cxf.transport.http.HTTPConduit;
import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
import java.util.Map;
/**
* webservice工具类
*/
public class WebServiceUtil {
private static Client client;
private static Object lock = new Object();
/**
* 调取webService服务
* @return
*/
public static Client getClient(String path){
if(client == null){
synchronized (lock) {
if(client == null){
DynamicClientFactory dcf = DynamicClientFactory.newInstance();
//获取ReadRfid接口
client = dcf.createClient(path);
HTTPConduit http = (HTTPConduit) client.getConduit();
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(1000 * 60 * 10);
httpClientPolicy.setAllowChunking(false);
httpClientPolicy.setReceiveTimeout(1000 * 60 * 100);
http.setClient(httpClientPolicy);
}
}
}
return client;
}
public static void readRfid(String[] args) throws Exception {
Client client = getClient("http://localhost:8080/ReadRfid.asmx?wsdl");
Object[] response = client.invoke("readRfid");
JSONObject json = JSONObject.parseObject(response[0].toString());
if(json.getBoolean("Result")){
String rfid = json.getString("Rfid");
}
System.out.println("调用结果 is " + response[0]);
}
}
2.调用示例
@RequestMapping(value = "/readRfid")
@ResponseBody
public Map<String, Object> readRfid(HttpServletRequest request) {
Map<String, Object> map = new HashMap<>();
boolean flag = false;
String msg = "扫描失败";
String rfid = "";
try {
String ip = IPUtils.getIpAddr(request);
Client client = WebServiceUtil.getClient(StaticConfig.getReadRfidURL().replace("ip", ip));
Object[] response = client.invoke("readRfid");
JSONObject json = JSONObject.parseObject(response[0].toString());
// client.close();
flag = json.getBoolean("Result");
msg = json.getString("Msg");
rfid = json.getString("Rfid");
} catch (Exception e) {
e.printStackTrace();
} finally {
interfaceLogService.interfaceLogInsert("扫描读取RFID接口", "", msg, DateUtils.getTime());
}
map.put("code", flag ? PgConst.AJAX_TRUE : PgConst.AJAX_FALSE);
map.put("msg", msg);
map.put("rfidCode", rfid);
try {
Thread.sleep(100L);
} catch (InterruptedException e) {
e.printStackTrace();
}
return map;
}