UPnP Description download mit http get() Methode

chett

Grünschnabel
Moin Moin,

ich beschäftige mich mit UpnP und versuche mit dem Cyberlink Developement Package eine "Control Punkt" zu entwickeln.

Ich habe also einen Control Punkt erzeugt, bekomme auch die Benachrichtungen anderer Upnp Geräte im netz mitgeteilt; was ich aber nicht auf dei Reihe bringe ist: Der Download der Geräte-Beschreibung.

Alle Informationen bisher bekam ich aus dem Object packet; wie ich aber an die Adresse der Beschreibung komme check ich nicht.

Kennt sich jemand aus?
 
Zuletzt bearbeitet:
ach ja der Code...

Code:
package autoDiscovery;

import java.io.File;
import java.io.IOException;
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.UnknownHostException;
import java.util.Vector;

import org.cybergarage.upnp.ControlPoint;
import org.cybergarage.upnp.Device;
import org.cybergarage.upnp.DeviceList;
import org.cybergarage.upnp.device.NotifyListener;
import org.cybergarage.upnp.device.SearchResponseListener;
import org.cybergarage.upnp.event.EventListener;
import org.cybergarage.upnp.ssdp.SSDPPacket;
import org.cybergarage.util.Debug;

import protocolManager.IFObserver;


/**
 * @author 
 *
 */

public class UPnPController extends ControlPoint implements NotifyListener, EventListener , SearchResponseListener, IFSubject{

	
	/**
	 * @param args
	 */
	private final static String DESCRIPTION_FILE_NAME = "description/description.xml";
    private final static String PRESENTATION_URI = "discovery/presentation";
	private Vector <IFObserver>abonomenten;
	private InetAddress inet, neu;
	private URL deviceDefLoc;
	private String deviceDescription;
	 
	/**
	 * @param args
	 */

	public void test(){
	
		debug("*********************************************************************************************");
		DeviceList rootDevList = this.getDeviceList();
		int nRootDevs = rootDevList.size();
		debug("UpnpC:: So groß ist device list: "+nRootDevs);
		for (int i=0; i<nRootDevs; i++){
			Device dev=rootDevList.getDevice(i);
			String devName=dev.getFriendlyName();
			File devFile=dev.getDescriptionFile();
			debug("UpnpC:: Das ist der DescriptionFilePath"+dev.getDescriptionFilePath().toString());
//			dev.getDescriptionFile();
			int devPort=dev.getHTTPPort();
			String devInter=dev.getInterfaceAddress();
			System.out.println("UpnpC:: Name:"+i+devName+ "Port:"+devPort +"Interface Adresse!:"+devInter );
			}
		debug("*********************************************************************************************");
		 
	}
	
	
	public void deviceNotifyReceived(SSDPPacket packet)
	{
		debug(packet.toString());
		debug("UpnpC:: Upnp hat "+ +abonomenten.size()+" abonomenten");

		if (packet.isDiscover() == true) {
			String st = packet.getST();
			System.out.println("UpnpC:: ssdp:discover : ST = " + st);
			if(packet.getRemoteInetAddress()instanceof InetAddress) {
				notifyObserver(packet.getRemoteInetAddress());
				getDescription(packet.getLocation());
			}
			test();
		}
		else if (packet.isAlive() == true) {
			String usn = packet.getUSN();
			String nt = packet.getNT();
			String url = packet.getLocation();
			System.out.println("ssdp:alive : uuid = " + usn + ", NT = " + nt + ", location = " + url); 
			System.out.println("UpnpC:: Das ist die URL: "+url);
			debug("UpnpC:: Das ist Server:" +packet.getServer());
			debug("UpnpC:: Hier kommt alles "+packet.toString());
			inet = packet.getRemoteInetAddress();
			getDescription(url);
			if(inet instanceof InetAddress) {
				notifyObserver(inet);
			}
			test();
			
		}
		else if (packet.isByeBye() == true) {
			String usn = packet.getUSN();
			String nt = packet.getNT();
			String url = packet.getLocation();
			notifyObserver(packet.getRemoteInetAddress());
		}
		System.out.println(new java.sql.Timestamp(new java.util.Date().getTime()));
		
	}

	public void eventNotifyReceived(String uuid, long seq, String name, String value)
	{
		System.out.println("UpnpC:: Event Notify erhalten...");
	}
	
	public void getDescription(String inet){
		if(inet.isEmpty()==false){
		debug("GetDiscription:" + inet.toString()+"Ausgabe...");
//		java.io.inputStream in = inet.
		return;
		}
		debug("GetDescription ohne Ausgabe!");
		
	}

	public void deviceSearchResponseReceived(SSDPPacket packet)
	{
		String uuid = packet.getUSN();
		String st = packet.getST();
		String url = packet.getLocation();
		notifyObserver(packet.getRemoteInetAddress());
	}
	
	public UPnPController()
	{
		debug("UpnpC:: new UPnP ControlPoint");
		abonomenten = new Vector<IFObserver>();
		addNotifyListener(this);
		addSearchResponseListener(this);
		addEventListener(this);
		Debug.on();
	}
	
	public static void debug( String arg )
	{
		System.out.println("UpnpC:: "+arg);
	}

	public void addObserver(IFObserver obs) {
		debug("UpnpC:: UPnP addBeobachter ");
		abonomenten.add(obs);
		
	}

	public void removeObserver(IFObserver obs) {
		debug("UpnpC:: UPnP removeBeobachter");
		try {
			abonomenten.remove(abonomenten.indexOf(obs));
		} catch (RuntimeException e) {
			debug("UPnPC: Fehler beim entfernen des Observers: " + obs.toString());
			// TODO: handle exception
		}		
		debug("UpnpC:: UPnP es sind noch: "+abonomenten.size()+" vorhanden");
		
	}

	public void tryEverything (SSDPPacket packet) throws UnknownHostException{
		debug("UpnpC:: IP des UPnP Geräts: "+packet.getLocalAddress());
		debug("UpnpC:: 1"+InetAddress.getByName(packet.getLocalAddress()));
		debug("UpnpC:: 2"+InetAddress.getByName(packet.getHost()));
		debug("UpnpC:: 3"+InetAddress.getByName(packet.getRemoteAddress()));
		debug("UpnpC:: 4"+InetAddress.getByName(packet.toString().trim()));
	
	}  
	 
	public void notifyObserver(InetAddress inet) {
		debug("UPnP:: remove:" + inet.toString());
		for(int i=0; i<abonomenten.size(); i++){
			IFObserver obs = abonomenten.get(i);
			try {
				obs.remove(inet);
			} catch (RuntimeException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				debug("Entfernen der IP: "+ inet.toString()+" schlug Fehl");
			}
		}
		
	}

	
	
}
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück