2013-12-12 26 views
6

Bir java onvif uygulaması yapmayı planlıyorum. Yeni bir proje oluşturdum ve devicemgmt.wsdl dosyasından kaynaklar ürettim.Ayrıca uzak discovery.wsdl sınıflarını oluşturdum. Bir ağdaki bir cihazı, oluşturulan sınıfları kullanarak nasıl keşfedebilirim? Yardımlarınız için teşekkürler.ONVIF - Cihaz bulmanın başlangıcı

+0

olası yinelenen [WS Java için Keşif Uygulamaları] (http://stackoverflow.com/questions/1946206/ws-discovery-implementations-for-java) – mpromonet

cevap

4

devicemgmt.wsdl, discovery işlemiyle ilişkili değil, ONVIF bulma işlemi, http://specs.xmlsoap.org/ws/2005/04/discovery tabanlı olup UDP üzerinden SOAP kullanmaktadır. Eğer apache-CXF kullanıyorsanız

, bu kullanarak elde olabilir

Basit örnek kod olabilir

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

WSDiscoveryClient() tarafından bulunursa, (cxf kullanıyorum) sebebi ne olabilir? ama "SmartICRSS" veya "Onvifier" android uygulaması – 4ntoine

+0

@ 4ntoine gibi herhangi bir üretim kalitesinde onvif istemcisi tarafından bulunamadı sabun versiyonu olabilir? Ağ yakalama ayrıntılarını – mpromonet

+0

veren bir soru sormalısınız, muhtemelen haklısınız. keşif isteklerini/yanıtlarını yakaladım - ayrı SO soruyu oku: http://stackoverflow.com/questions/27191245/how-to-generate-soap-1-2-binding-for-wsdl-using-wsdl2java – 4ntoine

1

Aynı sorun vardı, CXF sadece büyüktür, lütfen yaklaşımımı kontrol edin: JavaWsDiscovery at https://github.com/thhart/javaWsDiscovery.

yerel ağ üzerindeki herhangi cihazları tanımlamak için muktedir ONVIF standartlarına göre önerilen gibi çizgi izleyen size mevcut tüm cihazları dönecektir, basit bir ağ prob kullanır

: ait

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

İlgili konular