ปัญหาเกี่ยวกับการบันทึกจากอุปกรณ์ Open ONVIF (Network Video Interface Forum)


90

ฉันทำงานในโครงการเครือข่ายเปิด Video Interface ฟอรั่ม-ชวาและทำตามขั้นตอนที่อธิบายไว้ในONVIF แอพลิเคชัน Programmer ของคำแนะนำ

ฉันได้สร้างแหล่งที่มาจากที่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 ส่วนใหญ่ไม่รองรับ ฉันคิดว่าคุณควรจะตรวจสอบในความสามารถของอุปกรณ์เพราะมันเป็นบริการเสริม (ขึ้นอยู่กับรายละเอียดการสนับสนุน): onvif.org/ver10/device/wsdl/GetCapabilities อีกหนึ่งหมายเหตุ: ในบรรทัดสุดท้ายคุณกำลังกำหนด getRecordings () ให้กับ "ความสามารถ" ... ดูที่onvif.org/onvif/ver10/recording.wsdl - ฉันจะบอกว่านี่คือประเภทเอาต์พุตสำหรับ GetServiceCapabilities () โปรดตรวจสอบอีกครั้งด้วย
Sigi

1
ควรตรวจสอบนโยบายความปลอดภัยของเว็บเซิร์ฟเวอร์เนื่องจากวิธีการดูเหมือนจะมีอยู่ในโค้ด แต่ไคลเอนต์ไม่อนุญาตหรือเข้าถึง
Ved

เห็นด้วยกับ 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 บนบริการสื่อดูเหมือนว่าปกติคุณจะได้รับข้อผิดพลาด

สำหรับ URL ของrecording.wsdlhttp://" + deviceip + "/onvif/recording_serviceบริการควรจะเป็น

ในการรับ URL corect เพื่อเข้าถึงบริการบันทึกคุณควรขอจากเมธอดGetCapabilities ของบริการdevicemgmt.wsdl


0

HTTP 405 - ทรัพยากรที่ไม่ได้รับอนุญาตมักเกิดขึ้นใน IIS ปัญหานี้เกิดขึ้นหากเงื่อนไขต่อไปนี้เป็นจริง:

  • คุณไม่ได้ระบุชื่อไฟล์ ตัวอย่างเช่นคุณไม่ได้ระบุ http: // Server / Web / ...

  • เปิดใช้งาน Scripting Object Model (SOM)

  • มีการเรียกเหตุการณ์ DTC

ดังนั้นเมื่อเปิดใช้งาน SOM แท็ก<form>ถูกแทรกในหน้าแท็กไม่ถูกต้องหมายความว่าไม่มีการดำเนินการใด ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.