CUCM AXL API 错误的 SoapAction
CUCM AXL API wrong SoapAction
我想对 CUCM DB 进行 SQL 查询。我使用 Maven jaxb2 插件从 WSDL 生成 Java 类,但 Cisco AXL 文档建议使用 wsdl2java。我有很多 Java 类 以 Req/Res 结尾(我理解的请求和响应)。这是我的代码:
public class CUCMDatabaseConnector extends WebServiceGatewaySupport{
private String SOAP_ACTION = "CUCM:DB ver=10.5";
public void updateData(){
String END_USERS_REQUEST = REQUEST,
AXLurl = "https://" + properties.getCurrentCUCM_IP() + ":8443/axl/";
ExecuteSQLQueryReq sqlRequest = new ExecuteSQLQueryReq();
sqlRequest.setSql(END_USERS_REQUEST);
WebServiceTemplate template = getWebServiceTemplate();
template.setMessageSender(NullHostnameVerifier.getMessageSender());
ExecuteSQLQueryRes sqlResponse = (ExecuteSQLQueryRes) template
.marshalSendAndReceive(
AXLurl,
sqlRequest,
new WebServiceMessageCallback() {
@Override
public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException {
TransportContext context = TransportContextHolder.getTransportContext();
HttpUrlConnection connection = (HttpUrlConnection) context.getConnection();
//adding required headers
connection.addRequestHeader( "SOAPAction", SOAP_ACTION);
connection.addRequestHeader("Authorization", autenString);
}
}
});
}
}
}
但是当我 运行 它时,我得到错误:
org.springframework.ws.soap.client.SoapFaultClientException: The endpoint reference (EPR) for the Operation not found is https://IP:8443/axl/services/AXLAPIService and the WSA Action = CUCM:DB ver=10.5 executeSQLQueryReq
所以,正如我所见,问题是 CUCM AXL 服务具有 executeSQLQuery 方法,但 不执行 SQLQueryReq 。
如何让 Spring 在 SoapAction 中放入正确的方法?或者我只需要使用 wsdl2java?
更新
当我生成 java 类 时,目录中也有 .xsd 架构。 jaxb2 配置指向 WSDL 文件,但是,我遇到了错误 URI [src/main/resources/AXLAPI.wsdl] does not provide the scheme part.
,而且它看起来像是从 xsd 模式而不是 wsdl 构建的插件 类。但是这个 wsdl 是从 CUCM 下载的原始文件。有什么问题吗?
在 developers.cisco.com 上找到 this link。此操作方法建议使用 AXLPort,这是一种用于向 CUCM 发出 SOAP 请求的包装器。
在我看来,CUCM AXL SOAP 接口不是开始使用 Spring WS
的最佳选择
我想对 CUCM DB 进行 SQL 查询。我使用 Maven jaxb2 插件从 WSDL 生成 Java 类,但 Cisco AXL 文档建议使用 wsdl2java。我有很多 Java 类 以 Req/Res 结尾(我理解的请求和响应)。这是我的代码:
public class CUCMDatabaseConnector extends WebServiceGatewaySupport{
private String SOAP_ACTION = "CUCM:DB ver=10.5";
public void updateData(){
String END_USERS_REQUEST = REQUEST,
AXLurl = "https://" + properties.getCurrentCUCM_IP() + ":8443/axl/";
ExecuteSQLQueryReq sqlRequest = new ExecuteSQLQueryReq();
sqlRequest.setSql(END_USERS_REQUEST);
WebServiceTemplate template = getWebServiceTemplate();
template.setMessageSender(NullHostnameVerifier.getMessageSender());
ExecuteSQLQueryRes sqlResponse = (ExecuteSQLQueryRes) template
.marshalSendAndReceive(
AXLurl,
sqlRequest,
new WebServiceMessageCallback() {
@Override
public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException {
TransportContext context = TransportContextHolder.getTransportContext();
HttpUrlConnection connection = (HttpUrlConnection) context.getConnection();
//adding required headers
connection.addRequestHeader( "SOAPAction", SOAP_ACTION);
connection.addRequestHeader("Authorization", autenString);
}
}
});
}
}
}
但是当我 运行 它时,我得到错误:
org.springframework.ws.soap.client.SoapFaultClientException: The endpoint reference (EPR) for the Operation not found is https://IP:8443/axl/services/AXLAPIService and the WSA Action = CUCM:DB ver=10.5 executeSQLQueryReq
所以,正如我所见,问题是 CUCM AXL 服务具有 executeSQLQuery 方法,但 不执行 SQLQueryReq 。 如何让 Spring 在 SoapAction 中放入正确的方法?或者我只需要使用 wsdl2java?
更新
当我生成 java 类 时,目录中也有 .xsd 架构。 jaxb2 配置指向 WSDL 文件,但是,我遇到了错误 URI [src/main/resources/AXLAPI.wsdl] does not provide the scheme part.
,而且它看起来像是从 xsd 模式而不是 wsdl 构建的插件 类。但是这个 wsdl 是从 CUCM 下载的原始文件。有什么问题吗?
在 developers.cisco.com 上找到 this link。此操作方法建议使用 AXLPort,这是一种用于向 CUCM 发出 SOAP 请求的包装器。 在我看来,CUCM AXL SOAP 接口不是开始使用 Spring WS
的最佳选择