通过调用API接口,获取需要的数据信息。API接口返回的数据为json格式。

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
public class query {
	public static JSONArray result(int typeId, int page) {
		// 接口地址
		String requestUrl = "https://www.xxx.com/xxxxx";

		// params用于存储要请求的参数,我的请求参数为typeId,page
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("typeId", typeId);
		params.put("page", page);
		// 调用httpRequest方法,这个方法主要用于请求地址,并加上请求参数
		String string = httpRequest(requestUrl, params);
		// 处理返回的json数据,获取data JSONArray
		JSONArray iwanna = JSONObject.fromObject(string).getJSONArray("data");
		//处理JSONArray,取出需要的newsId与title值
		JSONArray iwanna1 = new JSONArray();		
		JSONObject row = null;  
		for (int i = 0; i < iwanna.size(); i++) {  
		 row = iwanna.getJSONObject(i);
		 JSONObject row1=new JSONObject();
		 row1.put("newsId",row.get("newsId"));
		 row1.put("title",row.get("title"));
		 iwanna1.add(row1);
		}
		return iwanna1;
	}

	public static String httpRequest(String requestUrl, Map<String, Object> params) {
		// buffer用于接受返回的字符
		StringBuffer buffer = new StringBuffer();
		try {
			// 建立URL,把请求地址给补全,其中urlencode()方法用于把params里的参数给取出来
			URL url = new URL(requestUrl + "?" + urlencode(params));
			//System.out.println(url);
			// 打开http连接
			HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();
			httpUrlConn.setDoInput(true);
			httpUrlConn.setRequestMethod("GET");
			//请求头部信息,根据实际需求添加
			httpUrlConn.addRequestProperty("id", "xxx");
			httpUrlConn.addRequestProperty("secret", "xxxxx");
			httpUrlConn.connect();
			// 获取输入的参数
			InputStream inputStream = httpUrlConn.getInputStream();
			InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
			BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

			// 将bufferReader的值给放到buffer里
			String str = null;
			while ((str = bufferedReader.readLine()) != null) {
				buffer.append(str);
			}
			// 关闭bufferReader和输入流
			bufferedReader.close();
			inputStreamReader.close();
			inputStream.close();
			inputStream = null;
			// 断开连接
			httpUrlConn.disconnect();

		} catch (Exception e) {
			e.printStackTrace();
		}
		// 返回字符串
		return buffer.toString();
	}

	public static String urlencode(Map<String, Object> data) {
		// 将map里的参数变成像typeId=###&page=###&的样子
		StringBuilder sb = new StringBuilder();
		for (Map.Entry i : data.entrySet()) {
			try {
				sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue() + "", "UTF-8")).append("&");
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
		}
		return sb.toString();
	}

	// 测试是否有效
	public static void main(String[] args) {

		System.out.println(result(509, 4));
	}

}
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

API接口返回的完整数据如下

{
    "code": 1,
    "msg": "数据返回成功!",
    "data": [
        {
            "title": "海外破产谣言四起 留给王健林的时间不多了",
            "imgList": [
                "http://cms-bucket.ws.126.net/2020/0416/9d9d0344j00q8uu3g001xc000zk00k0c.jpg"
            ],
            "source": "新财富",
            "newsId": "FAANASFF00259DLP",
            "digest": "",
            "postTime": "2020-04-16 07:31:52",
            "videoList": null
        },
        {
            "title": "4月多地出台楼市调控政策 刚需释放房企销售\"回温\"",
            "imgList": [
                "http://cms-bucket.ws.126.net/2020/0416/332d09fcp00q8uu8j0056c0009c005uc.png"
            ],
            "source": "中国网财经",
            "newsId": "FAAQ2DQK00259DLP",
            "digest": "",
            "postTime": "2020-04-16 08:19:40",
            "videoList": null
        },
        {
            "title": "财经派云对话|张玮:疫情是否会加重逆全球化?",
            "imgList": [
                "http://cms-bucket.ws.126.net/2020/0416/03c6931cj00q8uvfa009zc000s600e3c.jpg"
            ],
            "source": "",
            "newsId": "221127",
            "digest": null,
            "postTime": "2020-04-16 08:37:08",
            "videoList": null
        },
        {
            "title": "南财早新闻丨最新房价数据今日公布;欧美股市全线收跌,美油跌跌不休创18年新低",
            "imgList": [
                "http://cms-bucket.ws.126.net/2020/0416/10cb86f2j00q8urz8000hc000a8006dc.jpg"
            ],
            "source": "21世纪经济报道",
            "newsId": "FAAN83HM05199NPP",
            "digest": "",
            "postTime": "2020-04-16 07:30:34",
            "videoList": null
        },
        {
            "title": "高盛、美国银行、花旗等一季度利润跌超40%",
            "imgList": null,
            "source": "金融界",
            "newsId": "FAAL9OM40519QIKK",
            "digest": "",
            "postTime": "2020-04-16 06:56:17",
            "videoList": null
        },
        {
            "title": "华为紧盯汽车:HiCar今年落地 野心不止车联网",
            "imgList": [
                "http://cms-bucket.ws.126.net/2020/0416/ca71a10ep00q8utne00xtc001hc00zkc.png"
            ],
            "source": "每日经济新闻",
            "newsId": "FAAPB3S800258105",
            "digest": "",
            "postTime": "2020-04-16 08:06:56",
            "videoList": null
        },
        {
            "title": "诺诚健华-B(09969)超额配股权获悉数行使 涉及3754.8万股",
            "imgList": null,
            "source": "智通财经网",
            "newsId": "FAAJOFT405198UNI",
            "digest": "",
            "postTime": "2020-04-16 06:29:23",
            "videoList": null
        }
    ]
}
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

运行后,获得的数据为

[
        {
            "title": "海外破产谣言四起 留给王健林的时间不多了",
            "newsId": "FAANASFF00259DLP",
        },
        {
            "title": "4月多地出台楼市调控政策 刚需释放房企销售\"回温\"",
            "newsId": "FAAQ2DQK00259DLP",
        },
        {
            "title": "财经派云对话|张玮:疫情是否会加重逆全球化?",
            "newsId": "221127",
        },
        {
            "title": "南财早新闻丨最新房价数据今日公布;欧美股市全线收跌,美油跌跌不休创18年新低",
            "newsId": "FAAN83HM05199NPP",
        },
        {
            "title": "高盛、美国银行、花旗等一季度利润跌超40%",
            "newsId": "FAAL9OM40519QIKK",
        },
        {
            "title": "华为紧盯汽车:HiCar今年落地 野心不止车联网",
            "newsId": "FAAPB3S800258105",
        },
        {
            "title": "诺诚健华-B(09969)超额配股权获悉数行使 涉及3754.8万股",
            "newsId": "FAAJOFT405198UNI",
        }
    ]
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

后续,通过newsId参数,调用另一个API接口,获取详细信息。

public class news {
	
	//获取新闻详细内容	
public static String detail(int typeId, int page) {
	//调用query,获取newsId
	JSONArray newsid=query.result(typeId,page);
	//循环获取到的newsId,得到新闻的详细内容
	for (int i = 0; i < newsid.size(); i++) {	
		JSONObject row = null; 
		 row = newsid.getJSONObject(i);
		System.out.println((String) row.get("title"));
		//调用details方法,获取
		System.out.println(details((String) row.get("newsId")));
		System.out.println("----------------------");
	}
	return "success";
	}

	public static String details(String newsId) {
		// 接口地址
		String requestUrl = "https://www.xxx.com/xxxxx";
		//与前部分接口调用相同
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("newsId", newsId);
		String news = query.httpRequest(requestUrl,params);
		// 判断接口调用是否成功
		JSONObject judge = JSONObject.fromObject(news);
		//code=0接口调用失败
		if(judge.getInt("code")==0) {
			return judge.getString("msg");
		}
		//code=1接口调用成功
		if(judge.getInt("code")==1) {
		//处理返回的json数据并处理
		JSONObject iwanna = JSONObject.fromObject(news).getJSONObject("data");
		return iwanna.getString("content");
	}
		return "success";
	}
	public static void main(String[] args){
		
		System.out.println(detail(509,1));

	}
}
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

运行,得到结果。wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 至此,调用结束。获取到需要的数据。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐