2013-12-12 12 views
6

मैं जावा ऑनवीफ एप्लिकेशन करने की योजना बना रहा हूं। मैंने devicemgmt.wsdl से एक नई परियोजना बनाई है और स्रोतों को उत्पन्न किया है। साथ ही दूरस्थ डिस्कवरी.wsdl से कक्षाएं उत्पन्न की हैं। मैं उत्पन्न कक्षाओं का उपयोग कर नेटवर्क में डिवाइस कैसे खोज सकता हूं? किसी भी मदद के लिए धन्यवाद।ONVIF - डिवाइस खोज की शुरुआत

+0

के संभावित डुप्लिकेट [WS- जावा के लिए डिस्कवरी कार्यान्वयन] (http://stackoverflow.com/questions/1946206/ws-discovery-implementations-for-java) – mpromonet

उत्तर

4

devicemgmt.wsdl खोज प्रक्रिया से संबंधित नहीं है, ONVIF खोज प्रक्रिया http://specs.xmlsoap.org/ws/2005/04/discovery पर आधारित है, यह यूडीपी पर SOAP का उपयोग करती है।

आप अपाचे-CXF उपयोग कर रहे हैं, इस का उपयोग कर प्राप्त किया जा सकता है

org.apache.cxf.ws.discovery.WSDiscoveryClient

एक साधारण नमूना कोड हो सकता है:

import java.util.List; 
import javax.xml.ws.EndpointReference; 
import org.apache.cxf.ws.discovery.WSDiscoveryClient; 

public class Main 
{ 
    public static void main(String[] args) 
    { 
     WSDiscoveryClient client = new WSDiscoveryClient(); 
     client.setVersion10(); // use WS-discovery 1.0 
     client.setDefaultProbeTimeout(1000); // timeout 1s 

     System.out.println("Probe:" + client.getAddress()); 
     List<EndpointReference> references = client.probe(); 

     System.out.println("Nb answsers:" + references.size()); 
     for (EndpointReference ref : references) 
     { 
      System.out.println(ref.toString()); 
     } 
    } 
} 
+0

कारण क्या हो सकता है (मैं cxf का उपयोग कर रहा हूं) डिवाइस WSDiscoveryClient() द्वारा पाया गया है, लेकिन किसी भी उत्पादन-गुणवत्ता वाले ऑनवीफ क्लाइंट जैसे "स्मार्टआईसीआरएसएस" या "ऑनविफायर" एंड्रॉइड ऐप – 4ntoine

+0

@ 4ntoine यह साबुन संस्करण नहीं हो सकता है? आपको कुछ नेटवर्क कैप्चर विवरण देने के लिए एक प्रश्न पूछना चाहिए – mpromonet

+0

आप शायद सही हैं। मैंने खोज अनुरोध/प्रतिक्रियाओं को रोक दिया है - मेरा अलग SO प्रश्न पढ़ें: http://stackoverflow.com/questions/27191245/how-to-generate-soap-1-2-binding-for-wsdl-using-wsdl2java – 4ntoine

1

मुझे एक ही समस्या थी, सीएक्सएफ बस बड़ा है, कृपया मेरा दृष्टिकोण देखें: JavaWsDiscovery https://github.com/thhart/javaWsDiscovery पर।

यह एक सरल नेटवर्क जांच के रूप में Onvif मानकों द्वारा सुझाए गए अपने स्थानीय नेटवर्क पर किसी भी उपकरणों की पहचान करने में सक्षम होना का उपयोग करता है, तो निम्न लाइन आप सभी उपलब्ध उपकरणों वापस आ जाएगी:

final Collection urls = DeviceDiscovery.discoverWsDevicesAsUrls("^http$", ".onvif.");

संबंधित मुद्दे