API调用开发demo
package fastjson;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
/*
* 1.URLConnection 的使用
*
* 2.fastJson 的使用
*
*/
public class connAPI {
//xml格式数据
public static void xml() throws Exception{
//参数url化
String city = java.net.URLEncoder.encode("北京", "utf-8");
//拼地址
String apiUrl = String.format("https://www.sojson.com/open/api/weather/xml.shtml?city=%s",city);
//开始请求
URL url= new URL(apiUrl);
URLConnection open = url.openConnection();
InputStream input = open.getInputStream();
//这里转换为String,带上包名,怕你们引错包
String result = org.apache.commons.io.IOUtils.toString(input,"utf-8");
//输出
System.out.println(result);
}
//json 格式
public static void json() throws Exception{
//参数url化
String city = java.net.URLEncoder.encode("北京", "utf-8");
//拼地址
String apiUrl = String.format("https://www.sojson.com/open/api/weather/json.shtml?city=%s",city);
//开始请求
URL url= new URL(apiUrl);
URLConnection open = url.openConnection();
InputStream input = open.getInputStream();
//这里转换为String,带上包名,怕你们引错包
String result = org.apache.commons.io.IOUtils.toString(input,"utf-8");
//输出
System.out.println(result);
}
public static void fastjson(){
String neturl = "https://www.sojson.com/open/api/weather/json.shtml?city=%E5%8C%97%E4%BA%AC";
URL url;
try {
url = new URL(neturl);
StringBuffer document = new StringBuffer();
URLConnection conn = url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(
conn.getInputStream(), "utf-8"));
String line = null;
while ((line = reader.readLine()) != null) {
document.append(line);
}
reader.close();
// {"date":"20180921","message":"Success !","status":200,"city":"北京","count":2,
// "data":{"shidu":"28%","pm25":13.0,"pm10":23.0,"quality":"优","wendu":"19","ganmao":"各类人群可自由活动",
// "yesterday":{"date":"20日星期四","sunrise":"05:58","high":"高温 27.0℃","low":"低温 16.0℃","sunset":"18:17","aqi":54.0,"fx":"南风","fl":"<3级","type":"多云","notice":"阴晴之间,谨防紫外线侵扰"},
// "forecast":[{"date":"21日星期五","sunrise":"05:59","high":"高温 25.0℃","low":"低温 14.0℃","sunset":"18:15","aqi":34.0,"fx":"西北风","fl":"3-4级","type":"晴","notice":"愿你拥有比阳光明媚的心情"},
// {"date":"22日星期六","sunrise":"06:00","high":"高温 23.0℃","low":"低温 14.0℃","sunset":"18:13","aqi":40.0,"fx":"西北风","fl":"3-4级","type":"晴","notice":"愿你拥有比阳光明媚的心情"},
// {"date":"23日星期日","sunrise":"06:01","high":"高温 23.0℃","low":"低温 12.0℃","sunset":"18:12","aqi":30.0,"fx":"北风","fl":"4-5级","type":"晴","notice":"愿你拥有比阳光明媚的心情"},
// {"date":"24日星期一","sunrise":"06:02","high":"高温 22.0℃","low":"低温 11.0℃","sunset":"18:10","aqi":37.0,"fx":"北风","fl":"<3级","type":"晴","notice":"愿你拥有比阳光明媚的心情"},
// {"date":"25日星期二","sunrise":"06:03","high":"高温 23.0℃","low":"低温 13.0℃","sunset":"18:09","aqi":52.0,"fx":"西南风","fl":"<3级","type":"晴","notice":"愿你拥有比阳光明媚的心情"}]}}
JSONObject jsonObject = JSON.parseObject(document.toString());
String date = jsonObject.getString("date");
String message = jsonObject.getString("message");
Integer status = jsonObject.getInteger("status");
String city = jsonObject.getString("city");
// 解析后面
String datas = jsonObject.getString("data");
JSONObject jb = JSON.parseObject(datas);
String shidu = jb.getString("shidu");
String wendu = jb.getString("wendu");
String ganmao = jb.getString("ganmao");
Integer pm25 = jb.getInteger("pm25");
Integer pm10 = jb.getInteger("pm10");
String quality = jb.getString("quality");
System.out.println(document);
System.out.println(date);
System.out.println(message);
System.out.println(status);
System.out.println(city);
System.out.println(datas);
System.out.println(shidu);
System.out.println(pm25);
System.out.println(pm10);
System.out.println(quality);
System.out.println(shidu);
System.out.println(wendu);
System.out.println(ganmao);
JSONArray forecast = jb.getJSONArray("forecast");
System.out.println(forecast);
for (int i = 0; i < forecast.size(); i++) {
JSONObject json = forecast.getJSONObject(i);
System.out
.println(json.getString("fl") + ":"
+ json.getString("fx") + ":"
+ json.getString("notice"));
}
String yesterday = jb.getString("yesterday");
JSONObject yjb = JSON.parseObject(yesterday);
System.out.println(yjb.toString());
String date2 = yjb.getString("date");
String sunrise = yjb.getString("sunrise");
System.out.println(date2);
System.out.println(sunrise);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
//fastjson();
try {
//xml();
json();
} catch (Exception e) {
e.printStackTrace();
}
}
}
API调用开发demo的更多相关文章
- WO+开放平台:API调用开发手记(话费计费接口2.0)
WO+能力共享平台(http://open.wo.com.cn)是中国联通推出的开放平台.拥有的丰富电信能力资源以及深度整合挖掘的第三方能力资源等.WO+平台提供的API均为简洁优雅的RESTful风 ...
- novaclient的api调用流程与开发
novaclient的api调用流程与开发 2015年07月05日 19:27:17 qiushanjushi 阅读数:3915 http://blog.csdn.net/tpiperatgod/ ...
- 如何用Baas快速在腾讯云上开发小程序-系列3 :实现腾讯云COS API调用
版权声明:本文由贺嘉 原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/640268001487425627 来源:腾云阁 h ...
- 【Qt编程】基于Qt的词典开发系列<八>--用户登录及API调用的实现
在上一篇文章<调用网络API>中,我仅仅讲述了怎样直观的使用API接口以及调用API后返回的结果,本文则从程序实现的角度来实现API的调用.当然本程序的实现也是借助于扇贝网的API接口文档 ...
- api 接口开发理论 在php中调用接口以及编写接口
如: http://localhost/openUser.php?act=get_user_list&type=json 在这里openUser.php相当于一个接口,其中get_user_l ...
- ABP开发框架前后端开发系列---(10)Web API调用类的简化处理
在较早期的随笔<ABP开发框架前后端开发系列---(5)Web API调用类在Winform项目中的使用>已经介绍了Web API调用类的封装处理,虽然这些调用类我们可以使用代码生成工具快 ...
- ABP开发框架前后端开发系列---(5)Web API调用类在Winform项目中的使用
在前面几篇随笔介绍了我对ABP框架的改造,包括对ABP总体的介绍,以及对各个业务分层的简化,Web API 客户端封装层的设计,使得我们基于ABP框架的整体方案越来越清晰化, 也越来越接近实际的项目开 ...
- ABP开发框架前后端开发系列---(4)Web API调用类的封装和使用
在前面随笔介绍ABP应用框架的项目组织情况,以及项目中领域层各个类代码组织,以及简化了ABP框架的各个层的内容,使得我们项目结构更加清晰.上篇随笔已经介绍了字典模块中应用服务层接口的实现情况,并且通过 ...
- Vue.js——使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用
概述 上一篇我们介绍了如何使用vue resource处理HTTP请求,结合服务端的REST API,就能够很容易地构建一个增删查改应用.这个应用始终遗留了一个问题,Web App在访问REST AP ...
随机推荐
- 洛谷 P1663 山
https://www.luogu.org/problemnew/show/P1663 可能在这里看会好一点:[题解]
- 基于ubuntu 14.04 kvm虚拟化部署
1. 宿主机环境(dell备份服务器) Ubuntu 14.04 LTS 64位 内存:16G 硬盘:2T 2. 确认CPU是否支持硬件虚拟化 root@shwilling:~# egrep -o ' ...
- LeetCode(9)Palindrome Number
题目: Determine whether an integer is a palindrome. Do this without extra space. Some hints: Could neg ...
- Django之单表的增删改查
books/urls.py """books URL Configuration The `urlpatterns` list routes URLs to vi ...
- python基础-面向对象(装饰器)
属性: @property @method_name.setter @method_name.deleter 三个标签都是放在方法的上面来使用,且方法名要和后续使用的 变量名字相一 ...
- json的两种表示结构(对象和数组).。
JSON有两种表示结构,对象和数组.对象结构以”{”大括号开始,以”}”大括号结束.中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,语法结构如 ...
- 九度oj 题目1073:杨辉三角形
题目描述: 输入n值,使用递归函数,求杨辉三角形中各个位置上的值. 输入: 一个大于等于2的整型数n 输出: 题目可能有多组不同的测试数据,对于每组输入数据, 按题目的要求输出相应输入n的杨辉三角形. ...
- 九度oj 题目1026:又一版 A+B
题目描述: 输入两个不超过整型定义的非负10进制整数A和B(<=231-1),输出A+B的m (1 < m <10)进制数. 输入: 输入格式:测试输入包含若干测试用例.每个测试用例 ...
- POJ 2157 Maze
Maze Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 3183 Accepted: 996 Description A ...
- iOS转场动画初探
一般我们就用两种转场push和present present /** 1.设置代理 - (instancetype)init { self = [super init]; if (self) { se ...