JaxWsDynamicClientFactory 动态调用CXF
public class WebserviceClientUtil {
/**
*
*/
public static final String WSDLURL= "http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL";
/**
* webservice命名空间
*/
public static final String NAMEURL= "";
/**
*
*/
public static final String SYSFLAG= "JLSSIP0806141227";
/**
* webservice连接
*/
public static Client client;
public static Client getClent(){
return client;
}
public static boolean isClentConnection(){
if(client == null ){
return false;
}
return true;
}
static {
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
//创建client
System.out.println("client begin connections");
client = dcf.createClient(WSDLURL);
System.out.println("client finish connections");
HTTPConduit http = (HTTPConduit) client.getConduit();
//设置连接超时参数
HTTPClientPolicy hcp = new HTTPClientPolicy();
hcp.setConnectionTimeout(2000);
hcp.setReceiveTimeout(200000);
http.setClient(hcp);
}
/**
* 调用业务协同平台webService方法
* @param xmlInput
* 请求报文的data部分数据
* @param fwid
* 调用接口编号 SBKZKJD
* @return String
*/
public static Map <String,Object> invokeBcpWebService(String xmlInput,String fwid){
Map<String,Object> out = new HashMap<String,Object>();
out.put("code", "-1");
//设置SOAP头信息
try{
// client.getOutInterceptors().add(new AddSoapHeader(NAMEURL,SYSFLAG,xmlInput, RSAUtils.sign(xmlInput),fwid));
//发起调用
Object[] obj= client.invoke("getMobileCodeInfo", xmlInput);
//获取返回结果(XML格式)
Object result = obj[0];
client.getOutInterceptors().clear();
String str = String.valueOf(result);
if(!str.contains("faultcode")){
out.put("code", "1");
}else{
out.put("code", "-1");
}
out.put("result",str);
return out;
}catch(Exception e){
e.printStackTrace();
out.put("message", e.toString());
return out;
}
}
public static void main(String[] args) {
String xmlInput = "mobileCode=13069208531,userID =";
invokeBcpWebService(xmlInput,"");
}
}