Estoy trabajando en el proyecto Open Network Video Interface Forum-Java y sigo los pasos descritos en la Guía del programador de aplicaciones ONVIF .
He generado fuentes a partir del wsdls
sitio proporcionado en ONVIF. Puedo recuperar el URI de la transmisión en vivo usando media.wsdl
. Ahora tengo un problema con la grabación. Los códigos que he probado se dan a continuación:
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();
El código anterior en ejecución da un error como:
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Method 'ns11:GetServiceCapabilities' not implemented: method name or namespace not recognized
También probé con el servicio de medios, entonces el error es:
Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 405: Method Not Allowed
Respuestas:
Cuando intentó con la fuente de medios, solicitó una acción no autorizada aparentemente ya que el servidor devolvió el código de error 405. O el método está prohibido de usar o necesita una credencial para usar el método.
En cuanto a
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Method 'ns11:GetServiceCapabilities' not implemented: method name or namespace not recognized
, @Sigismondo tiene razón sobre el hecho de que la mayoría de las cámaras ip no lo admiten. Necesitará un método de grabación alternativo (literal y juego de palabras) para grabar desde una cámara ip.fuente
Está utilizando
http://" + deviceip + "/onvif/media_service
para comunicarse con el servicio de grabación, pero este es un servicio media.wsdl . Entonces, cuando intenta llamar a getRecordings en el servicio de medios, parece normal que reciba un error.La url para recording.wsdl servicio debería ser
http://" + deviceip + "/onvif/recording_service
.Para que la URL de corect llegue al servicio de grabación, debe solicitarla desde el método GetCapabilities del servicio devicemgmt.wsdl .
fuente
HTTP 405: el recurso no permitido suele aparecer en IIS. Este problema ocurre si se cumplen las siguientes condiciones:
No especifica el nombre del archivo. Por ejemplo, no especifica http: // Server / Web / ...
El modelo de objetos de secuencias de comandos (SOM) está habilitado.
Entonces, cuando el SOM está habilitado, se inserta una etiqueta <formulario> en la página, la etiqueta no es válida, significa que no contiene ninguna acción.
fuente