Saya sedang mengerjakan proyek Open Network Video Interface Forum-Java dan mengikuti langkah-langkah yang dijelaskan dalam Panduan Programmer Aplikasi ONVIF .
Saya telah menghasilkan sumber dari yang wsdls
disediakan di situs ONVIF. Saya dapat mengambil URI streaming langsung menggunakan media.wsdl
. Sekarang saya punya masalah dengan rekaman. Kode yang saya coba diberikan di bawah ini:
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();
Kode di atas saat dijalankan memberikan kesalahan sebagai:
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Method 'ns11:GetServiceCapabilities' not implemented: method name or namespace not recognized
Saya juga mencoba dengan layanan media, maka kesalahannya adalah:
Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 405: Method Not Allowed
Jawaban:
Ketika Anda mencoba dengan sumber media, Anda meminta tindakan tidak sah karena server mengembalikan kode Kesalahan 405. Metode tersebut dilarang digunakan, atau Anda memerlukan kredensial untuk menggunakan metode tersebut.
Adapun
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Method 'ns11:GetServiceCapabilities' not implemented: method name or namespace not recognized
, @Sigismondo benar tentang fakta bahwa kebanyakan kamera ip tidak mendukungnya. Anda akan membutuhkan metode perekaman alternatif (literal dan pun) untuk merekam dari kamera ip.sumber
Anda menggunakan
http://" + deviceip + "/onvif/media_service
untuk mencapai layanan Perekaman, tetapi ini adalah layanan media.wsdl . Jadi, ketika Anda mencoba memanggil getRecordings pada layanan media, tampaknya normal Anda menerima kesalahan.Url untuk layanan recording.wsdl harus
http://" + deviceip + "/onvif/recording_service
.Untuk mendapatkan URL corect untuk mencapai layanan perekaman, Anda harus memintanya dari metode GetCapabilities dari layanan devicemgmt.wsdl .
sumber
HTTP 405 - Sumber daya tidak diperbolehkan biasanya terjadi di IIS. Masalah ini terjadi jika kondisi berikut ini benar:
Anda tidak menentukan nama file. Misalnya, Anda tidak menentukan http: // Server / Web / ...
The Scripting Object Model (SOM) diaktifkan.
Jadi, ketika SOM diaktifkan , tag <form> dimasukkan ke halaman, tag tidak valid berarti tidak mengandung tindakan apa pun.
sumber