81,092
社区成员
发帖
与我相关
我的任务
分享
/**
* 调用webservice
*
* @param url
* URL地址
* @param method
* 调用的方法名称
* @param paramName
* 传递的参数名称
* @param param
* 传递的参数
* @return 未解析的XML字符串
*/
@Override
public String callWebService(String url, String method, String paramName, String param)
{
String resultStr = null;
logger.info("调用webservice 参数为:param=" + param);
try
{
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(url));
// 设置要调用哪个方法
//call.setOperationName(method);
call.setOperationName(new QName("http://testspeed.com",method));
// 设置要传递的参数
call.addParameter(new QName("http://testspeed.com",paramName), XMLType.XSD_STRING, ParameterMode.IN);
// 要返回的数据类型(自定义类型)
call.setReturnType(XMLType.XSD_STRING);// (标准的类型)
//call.setUseSOAPAction(true);
//call.setSOAPActionURI(method);
// 调用方法并传递参数
String result = (String) call.invoke(new Object[] { param });
if (logger.isDebugEnabled())
{
logger.debug("调用webservice 返回结果为:" + result);
}
}
catch (MalformedURLException e)
{}
catch (ServiceException e)
{}
catch (RemoteException e)
{}
return resultStr;
}
/**
* 根据客户端IP获得用户账号
*
* @param param
* XML格式的参数
* @return 未解析的XML报文
*/
public String getAccessNum(String param)
{
// url
String url = "http://25.24.29.18:8190/obs-auth/webservice/OBSInterfaceForAuth?wsdl";
// 要调用方法
String method = "AuthIP";
// 参数名称
String paramName = "AuthIPRequest";
// 请求webservice
String result = callWebService(url, method, paramName, param);
return result;
}
/**
* 调用webservice
*
* @param url
* URL地址
* @param method
* 调用的方法名称
* @param paramName
* 传递的参数名称
* @param param
* 传递的参数
* @return 未解析的XML字符串
*/
private String callWebService(String url, String method, String paramName,
String param)
{
String resultStr = null;
try
{
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(url));
// 设置要调用哪个方法
call.setOperationName(method);
// 设置要传递的参数
call.addParameter(paramName, XMLType.XSD_STRING, ParameterMode.IN);
// 要返回的数据类型(自定义类型)
call.setReturnType(XMLType.XSD_STRING);// (标准的类型)
call.setUseSOAPAction(true);
call.setSOAPActionURI(method);
// 调用方法并传递参数
resultStr = (String) call.invoke(new Object[] { param });
}
catch (MalformedURLException e)
{}
catch (ServiceException e)
{}
catch (RemoteException e)
{}
return resultStr;
}
<?xml version="1.0" encoding="UTF-8"?>
<service name="fromCRM/user/CallUser">
<description>
TestSpeed CallUser
</description>
<parameter name="ServiceClass">
com.testspeed.CallUser
</parameter>
<operation name="getAccessNum">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
<operation name="getUserMess">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
</service>
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server
faultSubcode:
faultString: org/apache/commons/discovery/tools/DiscoverSingleton
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:org/apache/commons/discovery/tools/DiscoverSingleton
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782)