API的全称是应用编程接口(Application Programming Interface),这并不是一个新概念,在计算机操作系统出现的早期就已经存在了。在互联网时代,把网站的服务封装成一系列计算机易识别的数据接口开放出去,供第三方开发者使用,这种行为就叫做开放网站的API,与之对应的,所开放的API就被称作openAPI。
OSCHINA API的使用
OSCHINA API:https://www.oschina.net/openapi/docs
| 12
 3
 4
 5
 6
 7
 8
 
 | - 什么是tokentoken(令牌)是一串唯一的字符串,通常由服务端生成,在注册完成时返回给客户端,用来标识此用户,客户端将此字符串存储在本地。在以后的网络请求时,客户端先查询本地的token,如果有则直接使用此令牌进行网络请求,没有则提示未登录,转到登陆注册界面。
 此外,还可以在服务端或者客户端添加过期判别机制。
 
 - token的作用
 token可以显著减少服务端对用户表的查询,同时使用户不必每次都登陆,提高了系统的可用性与健壮性。
 
 - 使用SharedPreferences保存token
 
 | 
1.创建应用
| 12
 3
 4
 5
 
 | 状态		正在审核应用ID	GCqPUbrIaoe7nUScRlet
 应用私钥	YFJDhiYsnyI6qW8nzdAHYIPocZsPEff1
 应用首页	https://fangjian98.github.io/
 回调地址	http://192.168.0.106/
 
 | 

2.OAuth2 获取 AccessToken,应用通过 AccessToken 访问 OpenApi 使用用户数据。
采用 OAuth2 协议 认证,开放 osc 移动 app 版本所有接口
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 
 | 1.
 
 
 https://www.oschina.net/action/oauth2/authorize?response_type=code&client_id=GCqPUbrIaoe7nUScRlet&redirect_uri=http://192.168.0.106/
 
 http://192.168.0.106/?code=iap9LL&state=
 
 2.
 
 
 
 https://www.oschina.net/action/openapi/token?client_id=GCqPUbrIaoe7nUScRlet&client_secret=YFJDhiYsnyI6qW8nzdAHYIPocZsPEff1&grant_type=authorization_code&code=pZ6Ye2&redirect_uri=http://192.168.0.106/&dataType=json
 
 {"access_token":"09a10176-7772-4577-8856-1b396f86e83b","refresh_token":"da728b79-3b0d-4062-961b-bd67c09ecbcd","uid":4470181,"token_type":"bearer","expires_in":604799}
 
 3.使用AccessToken请求:参考OpenAPI文档即可
 
 
 
 https://www.oschina.net/action/openapi/news_list?access_token=09a10176-7772-4577-8856-1b396f86e83b&catalog=2&page=1&pageSize=10&dataType=json
 
 
 必选	类型及范围	说明				默认值
 access_token	true	string	oauth2_token获取的access_token
 catalog			true	int		1-所有|2-综合新闻|3-软件更新		1
 page/pageIndex	true	int		页数	1
 pageSize		true	int		每页条数	20
 dataType		true	string	返回数据类型['json'|'jsonp'|'xml']	json
 
 
 
 
 
 https://www.oschina.net/action/openapi/news_detail?id=188164&access_token=6983b81e-5e2e-4685-888f-36abcf3f2da7&dataType=json
 
 必选	类型及范围	说明	默认值
 id				true	long	新闻编号	空
 access_token	false	string	oauth2_token获取的access_token 传则显示是否收藏 用户未登录则不传
 dataType		false	string	返回数据类型 ['json'|'jsonp'|'xml']	json
 
 | 
其他平台开放API
Json解析
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。JSON格式取代了xml给网络传输带来了很大的便利,是最常见的数据返回类型。
常见的Json解析库
| 12
 3
 4
 5
 6
 7
 8
 
 | Android给我们提供的Json解析类,官方提供的JSONArray与JSONObject这些API都存在于org.json包下,而我们用到的类有下面这些:
 JSONObject: Json对象,可以完成Json字符串与Java对象的相互转换
 JSONArray: Json数组,可以完成Json字符串与Java集合或对象的相互转换
 JSONStringer: Json文本构建类,这个类可以帮助快速和便捷的创建JSON text, 每个
 JSONStringer实体只能对应创建一个JSON text
 JSONTokener:Json解析类
 JSONException:Json异常
 
 | 
[1] https://www.cnblogs.com/lushimei/p/13436096.html