经过封装过的:
public class DotNetWebService_Caller {
static Logger log = Logger.getLogger(DotNetWebService_Caller.class);
public static Object getInstance(String service_url, String namespace,
String dotNetMethodName, Object inputObj, Object outputObj) throws RemoteException{
Object resultObj = null;
// 创建WebService调用
Service service = new Service();
Call call = null;
try {
call = (Call) service.createCall();
call.setTargetEndpointAddress(new URL(service_url));
} catch (MalformedURLException e) {
log.info("与基于DotNet的webService的URL建立连接时,出异常!",e);
e.printStackTrace();
} catch (ServiceException e1) {
log.info("调用DotNet的webservice时,createCall()出异常!",e1);
e1.printStackTrace();
}
// 设置调用的方法
OperationDesc oper = new OperationDesc();
oper.setName(dotNetMethodName);
ParameterDesc param = new ParameterDesc(new QName(namespace,
dotNetMethodName), ParameterDesc.IN, new QName(namespace,
dotNetMethodName), inputObj.getClass(), false, false);
oper.addParameter(param);
// --设置返回类型--开始--
oper.setReturnType(new QName(namespace, outputObj.getClass()
.getSimpleName()));
oper.setReturnClass(outputObj.getClass());
oper.setReturnQName(new QName(namespace, outputObj.getClass()
.getSimpleName()));
oper.setStyle(Style.DOCUMENT);
oper.setUse(Use.LITERAL);
// --设置返回类型--结束--
call.setOperation(oper);
// 设置方法名
call.setOperationName(new QName(namespace, dotNetMethodName));
// 设置call的其他属性
call.setUseSOAPAction(true);
call.setSOAPActionURI(namespace + dotNetMethodName);
call.setEncodingStyle(null);
call.setProperty(Call.SEND_TYPE_ATTR, Boolean.FALSE);
call.setProperty(AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE);
call.setSOAPVersion(SOAPConstants.SOAP11_CONSTANTS);
/*
* // 设置方法的输入参数 GetReceiptShowMsg parameters = new GetReceiptShowMsg();
* parameters.setMobileOAEmailAddress(MobileOAEmailAddress);
* parameters.setPageNum(pageNum); parameters.setItemNum(itemNum);
* parameters.setSelField(selField);
*/
// 调用方法
//System.out.println("inputObj:="+inputObj);
resultObj = call.invoke(new Object[] { inputObj });
//System.gc();
return resultObj;
}
}