【问题标题】:Cling: getBaseURL returns null on some devices and works on othersCling:getBaseURL 在某些设备上返回 null 并在其他设备上工作
【发布时间】:2013-01-10 10:55:53
【问题描述】:

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

【问题讨论】:

    标签: java android upnp


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 2016-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-22
      • 1970-01-01
      相关资源
      最近更新 更多