从URL读取JSON时连接超时

时间:2016-07-09 05:41:40

标签: java json getjson

我在程序下面运行以从URL获取JSON字符串。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;

public class Temp {

    public static void main(String args[]) throws Exception {
        System.out.println(readUrl("http://ip-api.com/json/31.15.112.160"));
    }

    private static String readUrl(String urlString) throws Exception {
        BufferedReader reader = null;
        try {
            URL url = new URL(urlString);
            reader = new BufferedReader(new InputStreamReader(url.openStream()));
            StringBuffer buffer = new StringBuffer();
            int read;
            char[] chars = new char[1024];
            while ((read = reader.read(chars)) != -1)
                buffer.append(chars, 0, read); 

            return buffer.toString();
        } finally {
            if (reader != null)
                reader.close();
        }
    }
}

结果

Exception in thread "main" java.net.ConnectException: Connection timed out: connect

但是,如果我尝试直接从浏览器访问该URL,则不会引发任何问题。

以下jQuery调用也可以。

$.getJSON("http://ip-api.com/json/31.15.112.160",
        function(data){
            document.getElementById("jsonIpDataISP").value = data.isp;
            document.getElementById("jsonIpDataCity").value = data.city;
            document.getElementById("jsonIpDataCountry").value = data.country;
            document.getElementById("jsonIpDataOrg").value = data.org;
            document.getElementById("jsonIpDataTimeZone").value = data.timezone;

            alert(data.isp);
            alert(data.city);
            alert(data.country);
            alert(data.org);
            alert(data.timezone);
      });

当我昨天尝试时,这实际上工作正常,但不知何故,它现在导致异常。 真的很感激任何帮助。

1 个答案:

答案 0 :(得分:0)

我的防病毒软件阻止了访问。我已经禁用它,现在没有问题。