JAVA通过HTTP方式获取数据
测试获取免费天气数据接口:http://www.weather.com.cn/data/sk/101190408.html
URL数据如下图:
代码部分:
package https; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class WeatherAPI { public static void main(String[] args) throws Exception { // WeatherAPI.json("北京"); System.out.println(getHttpRequestData("http://www.weather.com.cn/data/sk/101190408.html")); } public static String getHttpRequestData(String urlPath) { // 首先抓取异常并处理 String returnString = "1"; try{ // 代码实现以GET请求方式为主,POST跳过 /** 1 GET方式请求数据 start*/ // 1 创建URL对象,接收用户传递访问地址对象链接 URL url = new URL(urlPath); // 2 打开用户传递URL参数地址 HttpURLConnection connect = (HttpURLConnection) url.openConnection(); // 3 设置HTTP请求的一些参数信息 connect.setRequestMethod("GET"); // 参数必须大写 connect.connect(); // 4 获取URL请求到的数据,并创建数据流接收 InputStream isString = connect.getInputStream(); // 5 构建一个字符流缓冲对象,承载URL读取到的数据 BufferedReader isRead = new BufferedReader(new InputStreamReader(isString)); // 6 输出打印获取到的文件流 String str = ""; while ((str = isRead.readLine()) != null) { str = new String(str.getBytes(),"UTF-8"); //解决中文乱码问题 // System.out.println("文件解析打印:"); // System.out.println(str); returnString = str; } // 7 关闭流 isString.close(); connect.disconnect(); // 8 JSON转List对象 // do somthings }catch(Exception e){ e.printStackTrace(); } return returnString; } }
解析后控制台打印: