Problema com a gravação do dispositivo Open ONVIF (Network Video Interface Forum)

90

Estou trabalhando no projeto Open Network Video Interface Forum-Java e seguindo as etapas descritas no Guia do programador do aplicativo ONVIF .

Eu gerei fontes do wsdlssite fornecido no ONVIF. Consigo recuperar o URI da transmissão ao vivo usando o media.wsdl. Agora tenho um problema com a gravação. Os códigos que tentei são fornecidos abaixo:

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();

O código acima na execução fornece um erro como:

Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Method 'ns11:GetServiceCapabilities' not implemented: method name or namespace not recognized

Também tentei com o serviço de mídia, o erro é:

Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 405: Method Not Allowed
Neenu
fonte
5
observe que "gravação" é o serviço usado pelos gravadores ONVIF: a maioria das câmeras ip não o suporta. Acho que você deve verificar nas capacidades do dispositivo, pois é um serviço opcional (depende do perfil suportado): onvif.org/ver10/device/wsdl/GetCapabilities . Mais uma observação: na última linha, você está atribuindo getRecordings () aos "recursos" ... olhando para onvif.org/onvif/ver10/recording.wsdl - eu diria que esse é o tipo de saída para GetServiceCapabilities (). Apenas verifique isso também.
Sigismondo
1
as políticas de segurança do servidor web devem ser examinadas, já que o método parece existir no código, mas não é permitido ou acessível pelo cliente.
Ved
Concordo com Ved ... Quem quer que esteja implementando este WSDL não implementou certos recursos ou o namespace está apontando para uma declaração WSDL que não inclui a função. Pessoalmente, estou um pouco surpreso com a escolha do ONVIF de WSDL.

Respostas:

2

Ao tentar com a fonte de mídia, você solicitou uma ação não autorizada, aparentemente, pois o servidor retornou o código de erro 405. O uso do método está proibido ou você precisa de uma credencial para usar o método.

Quanto a Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Method 'ns11:GetServiceCapabilities' not implemented: method name or namespace not recognized, @Sigismondo está certo sobre o fato de que a maioria das câmeras ip não suportam. Você precisará de um método de gravação alternativo (literal e trocadilho) para gravar de uma câmera ip.

AMDG
fonte
1

Você está usando http://" + deviceip + "/onvif/media_servicepara acessar o serviço de Gravação, mas este é um serviço media.wsdl . Portanto, ao tentar chamar getRecordings no serviço de mídia, parece normal que você receba um erro.

O url para o serviço recording.wsdl deve ser http://" + deviceip + "/onvif/recording_service.

Para obter a URL correta para acessar o serviço de gravação, você deve solicitá-la do método GetCapabilities do serviço devicemgmt.wsdl .

mpromonet
fonte
0

HTTP 405 - O recurso não permitido geralmente ocorre no IIS. Esse problema ocorre se as seguintes condições forem verdadeiras:

  • Você não especifica o nome do arquivo. Por exemplo, você não especifica http: // Server / Web / ...

  • O Scripting Object Model (SOM) está ativado.

  • Um evento DTC é chamado.

Assim, quando o SOM está habilitado, uma tag <form> é inserida na página a tag é inválida significa que não contém nenhuma ação.

Ashraf.Shk786
fonte