public String invoke(OMElement head,OMElement body,String methodName,String routedestsys, String wsdl) {
String returnXml="";
try {
Options options = new Options();
// 指定调用WebService的URL
EndpointReference targetEPR = new EndpointReference(wsdl+routedestsys+"/");
options.setTo(targetEPR);
options.setTimeOutInMilliSeconds((long)60000);//设置超时时间30秒
//设置Http客户端连接可以复用
options.setProperty(HTTPConstants.REUSE_HTTP_CLIENT, Boolean.TRUE);
//设置httpConnection数量100个。
//获取httpClient
HttpClient httpClient = HttpClientPool.getHttpClient();
// 缓存httpclient对象,在服务器启动后到真实请求之前
options.setProperty(HTTPConstants.CACHED_HTTP_CLIENT, httpClient);
//end add
serviceClient = new ServiceClient();
serviceClient.setOptions(options);
// ***************HEAD头部信息的处理*************************************************
if(head!=null){
serviceClient.addHeader(head);// 追加头部信息
}
// ***************HEAD头部信息的处理*************************************************
// ***************BODY体信息的处理*************************************************
// 构建request报文
if(body!=null){
body.build();
}
// ***************BODY体信息的处理*************************************************
// System.out.println("发送的报文:"+XmlFormat.formatSendXML(method.toString()));
// 发送报文请求,返回OMElement
OMElement returnOme = serviceClient.sendReceive(body);
System.out.println("报文返回对象:"+returnOme);
if(returnOme!=null){
returnXml=returnOme.getBuilder().getDocument().getFirstOMChild().toString();
}
//解决并发超时的问题
// serviceClient.cleanupTransport();
return returnXml;
} catch (AxisFault e) {
e.printStackTrace();
return null;
}finally{
if(serviceClient!=null){
try {
serviceClient.cleanupTransport();
} catch (AxisFault e1) {
e1.printStackTrace();
}
}
}
}
如果报文错误没有返回信息,用生成的报文在soapUI中调用可以返回错误信息?