从Open ONVIF(networkingvideo接口论坛)设备录制问题
我正在开发networkingvideo接口论坛Java项目,并按照“ ONVIF应用程序员指南”中描述的步骤进行操作。
我已经从ONVIF网站提供的wsdls
生成了源代码。 我可以使用media.wsdl
检索实时streamURI。 现在我有一个logging问题。 我试过的代码如下:
RecordingService recording_ervice = new RecordingService(); RecordingPort record_port = recording_ervice.getRecordingPort(); BindingProvider bindingProvider = (BindingProvider) record_port; // Add a security handler for the credentials final Binding binding = bindingProvider.getBinding(); List<Handler> handlerList = binding.getHandlerChain(); if (handlerList == null) { handlerList = new ArrayList<Handler>(); } handlerList.add(new RecordStream.SecurityHandler()); // binding.setHandlerChain(handlerList); // Set the actual web services address instead of the mock service Map<String, Object> requestContext = bindingProvider.getRequestContext(); requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://" + deviceip + "/onvif/media_service"); requestContext.put(BindingProvider.USERNAME_PROPERTY, user); requestContext.put(BindingProvider.PASSWORD_PROPERTY, pass); Recordings recordings = record_port.getRecordings();
运行上面的代码给出了一个错误:
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Method 'ns11:GetServiceCapabilities' not implemented: method name or namespace not recognized
我也尝试过媒体服务,那么错误是:
Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 405: Method Not Allowed
当您尝试使用媒体源时,您显然请求了未经授权的操作,因为服务器返回了错误代码405。要么禁止使用此方法,要么使用此方法需要证书。
至于Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Method 'ns11:GetServiceCapabilities' not implemented: method name or namespace not recognized
,@Sigismondo是正确的事实,大多数networking摄像机不支持它。 您将需要一个替代logging方法(文字和双关语)从IP摄像机logging。
您正在使用http://" + deviceip + "/onvif/media_service
访问录制服务,但是这是一个media.wsdl服务。 所以当你尝试在媒体服务上调用getRecordings时,你会收到一个错误。
recording.wsdl服务的URL应该是http://" + deviceip + "/onvif/recording_service
。
为了让corect URL到达logging服务,您应该从devicemgmt.wsdl服务的GetCapabilities方法中请求它。
HTTP 405 – 资源不允许通常在IIS中发生。 如果下列条件为真会发生此问题:
-
您不指定文件名称。 例如,您不指定http:// Server / Web / …
-
脚本对象模型(SOM)已启用。
- DTC事件被调用。
因此,当启用SOM时,在页面中插入一个<form>标签,标签无效意味着它不包含任何操作。