为了使用ONVIF从Axis相机中提取事件,我创建了以下内容:
CreatePullPointSubscriptionResponse pullPointSubscriptionResponse = event.createPullPointSubscription(parameters);
PullPointSubscription pullPointSubscription = pullPointSubscriptionResponse.getSubscriptionReference().getPort(PullPointSubscription.class);
PullMessages pullMessagesParameters = new PullMessages();
pullMessagesParameters.setMessageLimit(1);
javax.xml.datatype.Duration duration = DatatypeFactory.createDuration("PT1M");
pullMessagesParameters.setTimeout(duration);
try {
PullMessagesResponse pullMessageResponse = pullPointSubscription.pullMessages(pullMessagesParameters);
} catch (PullMessagesFaultResponse_Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int d=1;
} catch (TopicNotSupportedFault | TopicExpressionDialectUnknownFault | InvalidTopicExpressionFault
| InvalidMessageContentExpressionFault | InvalidProducerPropertiesExpressionFault
| UnacceptableInitialTerminationTimeFault | NotifyMessageNotSupportedFault | ResourceUnknownFault
| UnsupportedPolicyRequestFault | InvalidFilterFault | SubscribeCreationFailedFault
| UnrecognizedPolicyRequestFault e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我的问题是,当执行pullMessages时,使用SOAP1.1创建Web服务,而摄像头需要SOAP1.2(我得到版本不匹配错误响应)。
createPullPointSubscription创建了一个很好的版本Web服务,因为我创建的是使用JaxWsProxyFactoryBean并且我自己设置了绑定。 我无法以相同的方式创建拉消息WS,因为我没有封装到pullPointSubscription对象中的引用点(并且它们是私有的)。
我正在寻找让PullPointSubscription了解当前SOAP版本的方法,因此我将能够收到事件响应。
感谢。
答案 0 :(得分:0)
我在某种解决方法中解决了这个问题。 我使用.toString()从响应中提取私有参数,解析字符串,提取参数,并使用正确的版本和参数创建一个新的PullPointSubscription对象。