【问题标题】:Weather app cannot display temperature because of a UnknownHostException由于 UnknownHostException,天气应用无法显示温度
【发布时间】:2018-08-31 00:55:40
【问题描述】:

我正在按照教程使用天气库创建天气应用程序。当我尝试显示某个地方的温度时出现错误。我认为由于库的更新一定有问题。我我将分享代码、视频教程链接和错误,以便您准确指出错误。

代码:

public class HomeGUI extends javax.swing.JFrame {

    public HomeGUI() {
        initComponents();
        getWeather();
    }
    private void getWeather() {
        WeatherDoc doc=new WeatherDoc("29226594","c");
        WeatherDisplay disp=new WeatherDisplay();
        System.out.println(disp.getTemperature());    
    }

    private void initComponents() {
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
        );

        pack();
    }                       

    public static void main(String args[]) {
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (Exception ex) {
            java.util.logging.Logger.getLogger(HomeGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }

        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new HomeGUI().setVisible(true);
            }
        });
    }

    ...
}

错误:

run:
Mar 21, 2018 11:59:48 PM com.teknikindustries.yahooweather.WeatherDoc <init>
null
SEVERE: null
java.net.UnknownHostException: xml.weather.yahoo.com
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at java.net.Socket.connect(Socket.java:538)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
    at sun.net.www.http.HttpClient.New(HttpClient.java:339)
    at sun.net.www.http.HttpClient.New(HttpClient.java:357)
    ...

BUILD SUCCESSFUL (total time: 10 seconds)

任何帮助将不胜感激。

【问题讨论】:

  • 原因是该网址下的服务不再可用。
  • 在视频中,这个程序成功显示了温度,但是当我运行相同的程序时,我得到了一个错误。
  • 你可以看到视频是一个安静的老视频
  • @cool 那么我现在应该怎么做。我可以采取什么措施来解决它?
  • 你可以看看这边。igorkromin.net/index.php/2016/03/27/…

标签: java unknown-host


【解决方案1】:

在 Java 中,异常尝试提供有关特定问题的信息。在你的情况下:

java.net.UnknownHostException: xml.weather.yahoo.com

这个例外应该是显而易见的。主机名xml.weather.yahoo.com 未知。这不是任何代码的问题,只是雅虎似乎不再发布该名称。如果您查看DNS results from this tool,您可以看到:

DNS Record not found

您必须进行一些谷歌搜索,以了解 Yahoo 是否仍支持该天气协议,如果支持,该协议的新主机名是什么。这个API page from yahoo 帮我搜索yahoo weather xml

当浏览器,或者在你的情况下是代码中的 http 客户端,通过名称(google.com、cnn.com、xml.weather.yahoo.com 等)访问服务时,第一个发生的事情是一个域名服务 (DNS) 请求来查找名称,以便可以找到 IP 地址。浏览器或代码使用该 IP 地址连接到服务并获取结果。

如果 DNS 不返回有关地址的任何信息,则浏览器通常会返回类似 ERR_NAME_NOT_RESOLVED (chrome) 的错误,并且您的 Java 代码会抛出类似 UnknownHostException 的内容。

【讨论】:

  • 我可以使用谷歌或其他公司的不同天气协议吗?我可以这样做吗?如果可以,我可以从哪里获得它并了解它的实现。你能提供我的链接吗?最近的天气应用开发视频?
  • 刚刚添加了来自 yahoo 的 API 链接,它可能对 @CalculusProgrammer 有所帮助。只需刷新我的答案。
  • 感谢您提供链接并解释我的问题。我现在更深入地了解我的代码的作用。我一定会尝试这个 API。
  • 我刚刚使用了天气应用程序 V2.02 的最新 API 并删除了以前的 jar,但是这样做后,当我在 getWeather() 上没有从 jar 中导入包的选项单击此方法中提到的两个语句中的错误灯泡(我使用的是 Netbeans)。以前我得到了那个选项。
  • 我使用的新 API 是 yahoo-weather-java API 2.0.2,所有依赖项来自组 com.github.fedy2
猜你喜欢
  • 2021-06-02
  • 2021-11-21
  • 1970-01-01
  • 1970-01-01
  • 2016-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多