我正在开发一款使用Cling应用程序扫描网络设备的应用。我试图修改它,以便我也可以使用getBaseURL方法查看设备的IP地址。但是,当我扫描设备时,其中一些显示IP,其他返回null。有没有办法解决这个问题?
@Override
public String toString() {
String name =
device.getDetails() != null && device.getDetails().getFriendlyName() != null
? device.getDetails().getFriendlyName() +device.getDetails().getBaseURL()
: device.getDisplayString();
答案 0 :(得分:0)
有趣的是,org.teleal.cling.model.meta.DeviceDetails
有许多构造函数,但只有两种类型:获得friendlyName
但没有baseURL
(因此它保留为null)和其他(只有两个)得到的类型都。 baseURL
是最终私密的,因此您之后无法设置它。我个人不理解设计决策(为什么friendlyName
的知识被认为取代了baseURL
的知识),但IMO存在问题。在DeviceDetails
的最后一个构造函数中放置一个断点(唯一一个设置私有成员的构造函数)并观察它从哪里被调用(以及通过哪个特定的构造函数重载)。每个UPnP设备都有一个baseURL,它在LOCTIF标题中告诉它NOTIFY消息。因此DeviceDetails
不提供它的事实是Cling对它不感兴趣的问题(即不调用接受它的构造函数)。