Problem z nagrywaniem z urządzenia Open ONVIF (Network Video Interface Forum)

90

Pracuję nad projektem Open Network Video Interface Forum-Java i wykonuję kroki opisane w Podręczniku programisty aplikacji ONVIF .

Wygenerowałem źródła z wsdlspodanej w serwisie ONVIF. Jestem w stanie pobrać identyfikator URI transmisji na żywo przy użyciu rozszerzenia media.wsdl. Teraz mam problem z nagrywaniem. Kody, które wypróbowałem, podano poniżej:

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

Powyższy kod podczas uruchamiania powoduje błąd:

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

Próbowałem też z serwisem medialnym, wtedy błąd to:

Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 405: Method Not Allowed
Neenu
źródło
5
Zwróć uwagę, że „nagrywanie” to usługa używana przez rejestratory ONVIF: większość kamer IP jej nie obsługuje. Myślę, że powinieneś to sprawdzić w możliwościach urządzenia, ponieważ jest to usługa opcjonalna (zależy od obsługiwanego profilu): onvif.org/ver10/device/wsdl/GetCapabilities . Jeszcze jedna uwaga: w ostatniej linii przypisujesz getRecordings () do "właściwości" ... patrząc na onvif.org/onvif/ver10/recording.wsdl - powiedziałbym, że jest to typ wyjścia dla GetServiceCapabilities (). Po prostu sprawdź to również dwukrotnie.
Sigi,
1
Należy zbadać zasady bezpieczeństwa serwera WWW, ponieważ metoda wydaje się istnieć w kodzie, ale nie jest dozwolona lub nieosiągalna dla klienta.
Ved
Zgadzam się z Vedem ... Ktokolwiek implementuje ten WSDL, albo nie zaimplementował pewnych funkcji, albo przestrzeń nazw wskazuje na deklarację WSDL, która nie zawiera tej funkcji. Osobiście jestem trochę zaskoczony tym wyborem WSDL w ONVIF.

Odpowiedzi:

2

Podczas próby ze źródłem nośnika zażądano nieautoryzowanej akcji, najwyraźniej ponieważ serwer zwrócił kod błędu 405. Albo użycie metody jest zabronione, albo do jej użycia potrzebne są poświadczenia.

Jeśli chodzi o Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Method 'ns11:GetServiceCapabilities' not implemented: method name or namespace not recognized, @Sigismondo ma rację co do tego, że większość kamer IP go nie obsługuje. Będziesz potrzebować alternatywnej metody nagrywania (dosłownie i kalambur), aby nagrywać z kamery IP.

AMDG
źródło
1

Używasz http://" + deviceip + "/onvif/media_servicedo uzyskania dostępu do usługi nagrywania, ale jest to usługa media.wsdl . Więc kiedy próbujesz wywołać getRecordings w serwisie medialnym, wydaje się normalne, że pojawia się błąd.

Adres URL usługi recording.wsdl powinien mieć postać http://" + deviceip + "/onvif/recording_service.

Aby uzyskać poprawny adres URL umożliwiający dostęp do usługi nagrywania, należy zażądać go z metody GetCapabilities usługi devicemgmt.wsdl .

mpromonet
źródło
0

HTTP 405 - Zasób niedozwolony zwykle występuje w usługach IIS. Ten problem występuje, jeśli są spełnione następujące warunki:

  • Nie określasz nazwy pliku. Na przykład nie określasz http: // Server / Web / ...

  • Model obiektu skryptowego (SOM) jest włączony.

  • Wywoływane jest zdarzenie DTC.

Tak więc, gdy SOM jest włączony, tag <form> jest wstawiany na stronę, tag jest nieprawidłowy, oznacza, że ​​nie zawiera żadnej akcji.

Ashraf.Shk786
źródło