2014-01-08 4 views
89

Я работаю над проектом Open Network Video Interface Forum-Java и следуя инструкциям, описанным в разделе ONVIF Application Programmer's Guide.Проблема с записью с устройства Open ONVIF (Network Video Interface Forum)

Я создал источники от wsdls, предоставленные на сайте ONVIF. Я могу получить URI в реальном времени с использованием media.wsdl. Теперь у меня проблема с записью. Коды, которые я пытался приведен ниже:

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 
+5

Обратите внимание, что «запись» - это сервис, используемый регистраторами ONVIF: большинство ip-камер не поддерживают его. Я думаю, вы должны проверить его в возможностях устройства, поскольку это дополнительная услуга (зависит от поддерживаемого профиля): http://www.onvif.org/ver10/device/wsdl/GetCapabilities. Еще одно замечание: в последней строке вы назначаете getRecordings() на «возможности» ... глядя на http://www.onvif.org/onvif/ver10/recording.wsdl - я бы сказал, что это тип вывода для GetServiceCapabilities(). Просто дважды проверьте его. – Sigismondo

+1

политики безопасности веб-сервера должны быть проверены, поскольку метод, похоже, существует в коде, но не разрешен или доступен клиенту. – Ved

+0

Согласен с Ved ...Тот, кто реализует этот WSDL, либо не реализовал некоторые функции, либо пространство имен указывает на объявление WSDL, которое не включает эту функцию. Лично я немного озадачен этим выбором ONVIF WSDL. –

ответ

2

Когда вы пытались использовать источник мультимедиа, вы запросили несанкционированное действие, по-видимому, так как сервер вернул код ошибки 405. Либо метод запрещен к использованию, либо вам нужны учетные данные для использования мето д.

Что касается Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Method 'ns11:GetServiceCapabilities' not implemented: method name or namespace not recognized, @Sigismondo прав насчет того факта, что большинство ip-камер не поддерживают его. Для записи с ip-камеры вам понадобится альтернативный метод записи (литерал и каламбура).

1

Вы используете http://" + deviceip + "/onvif/media_service для доступа к службе записи, но это услуга media.wsdl. Поэтому, когда вы пытаетесь вызвать getRecordings в медиа-службе, кажется нормальным, вы получаете сообщение об ошибке.

Адрес для recording.wsdl услуга должна быть http://" + deviceip + "/onvif/recording_service.

Чтобы получить URL-адрес для доступа к службе записи, вы должны запросить его у метода GetCapabilities службы devicemgmt.wsdl.

0

HTTP 405 - Недопустимый ресурс обычно встречается в IIS. Эта проблема возникает, если выполняются следующие условия:

  • Вы не указали имя файла. Например, вы не укажете http: // Server/Web/...

  • Включена объектная модель сценариев (SOM).

  • Вызывается событие DTC.

Так что, когда SOM включен то < форма> тег вставляется в страницу тег является недействительным означает, что он не содержит каких-либо действий.