0

我正在开发一个应用程序,它将使用 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();
4

1 回答 1

0

有趣的是,org.teleal.cling.model.meta.DeviceDetails它有许多构造函数,但只有两种类型:一种得到friendlyName但没有baseURL(因此它被保留为空)和另一种(只有两种)两者都得到。baseURL是最终私有的,所以你以后没有机会设置它。我个人不理解设计决策(为什么friendlyName认为 的知识会取代 的知识baseURL)但 IMO 存在问题。DeviceDetails在(唯一设置私有成员的)的最后一个构造函数中放置一个断点并观察它从哪里被调用(以及通过哪个特定的构造函数重载)。每个 UPnP 设备都有一个 baseURL,它在其 NOTIFY 消息的 LOCATION 标头中告诉它。所以事实是DeviceDetails不提供它是 Cling 对它不感兴趣的问题(即不调用接受它的构造函数)。

于 2013-01-28T12:31:07.233 回答