HTTP状态码
- HTTP的响应状态码分为五类:
- 信息响应(100-199)
- 成功响应(200-299)
- 重定向(300-399)
- 客户端错误(400-499)
- 服务器错误(500-599)
- 常见的HTTP响应状态码
200-请求成功
301-资源或网页等被永久转移到其他URL
404-请求的资源不存在
500-内部服务器错误
获取状态码的代码
import okhttp3.Response;
//执行请求
Response rep = call.execute();
//获取响应状态码
int code = rep.code();
//获取响应内容
String content = rep.body().string();
获取二进制编码格式的内容
import okhttp3.Response;
//执行请求
Response rep = call.execute();
//获取二进制编码格式的内容
byte[] datas = rep.body.bytes();
解析JSON对象
JSON对象较为复杂,所以学会解析很重要。
放一个较为复杂的例子:
下面是一部分JSON格式的数据,要求是取出第一首歌的albumname
的值,也就是刀郎Ⅲ。{
"code": 0,
"data": {
"keyword": "西海情歌",
"priority": 0,
"qc": [
],
"semantic": {
"curnum": 0,
"curpage": 1,
"list": [],
"totalnum": 0
},
"song": {
"curnum": 50,
"curpage": 1,
"list": [
{
"albumid": 14880,
"albummid": "0024RXz94OSKCa",
"albumname": "刀郎Ⅲ",
分析一下嵌套的顺序是data->song->list->0号元素->albumname; list是一个集合,集合里面放的是对象,所以要先取出第一个对象,也就是list的0号元素。
import com.alibaba.fastjson.JSON;
import java.util.Map;
import java.util.List;
//先将其转换为Map对象,content是JSON格式的内容
Map contentObj = JSON.parseObject(content,Map.class);
//取出data,因为Map可以存储任何对象,所以要指定实际类型
Map data = (Map)contentObj.get("data");
//取出song
Map song = (Map)data.get("song");
//取出list。注意list的类型是List
List list = (List)song.get("list");
//取出list集合的0号元素,0号元素是Map类型
Map list0 = (Map)list.get(0);
//最后取出albumname字段的值
String albumname = (String)list0.get("albumname");