Я работаю над проектом Open Network Video Interface Forum-Java и выполняю шаги, описанные в Руководстве программиста по приложениям ONVIF .
Я создал исходники из 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
Ответы:
Когда вы пытались использовать источник мультимедиа, вы запросили несанкционированное действие, очевидно, поскольку сервер вернул код ошибки 405. Либо метод запрещен для использования, либо вам нужны учетные данные для использования метода.
Что касается
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Method 'ns11:GetServiceCapabilities' not implemented: method name or namespace not recognized
, @Sigismondo прав в том, что большинство IP-камер его не поддерживают. Вам понадобится альтернативный метод записи (буквальный и каламбур) для записи с IP-камеры.источник
Вы используете
http://" + deviceip + "/onvif/media_service
для доступа к службе записи, но это служба media.wsdl . Поэтому, когда вы пытаетесь вызвать getRecordings в медиа-службе, это кажется нормальным, вы получаете сообщение об ошибке.URL для recording.wsdl службы должно быть
http://" + deviceip + "/onvif/recording_service
.Чтобы получить URL-адрес corect для доступа к службе записи, вы должны запросить его у метода GetCapabilities службы devicemgmt.wsdl .
источник
HTTP 405 - ресурс, который запрещен, обычно встречается в IIS. Эта проблема возникает, если выполняются следующие условия:
Вы не указываете имя файла. Например, вы не указываете http: // Server / Web / ...
Модель объекта сценариев (SOM) включена.
Итак, когда SOM включен, тег <form> вставляется на страницу, тег недействителен, значит, он не содержит никаких действий.
источник