Java网络编程req/res对象、headers - 图1

HTTP状态码

  • HTTP的响应状态码分为五类:
  1. 信息响应(100-199)
  2. 成功响应(200-299)
  3. 重定向(300-399)
  4. 客户端错误(400-499)
  5. 服务器错误(500-599)
  • 常见的HTTP响应状态码

200-请求成功
301-资源或网页等被永久转移到其他URL
404-请求的资源不存在
500-内部服务器错误

  • 获取状态码的代码

    1. import okhttp3.Response;
    2. //执行请求
    3. Response rep = call.execute();
    4. //获取响应状态码
    5. int code = rep.code();
    6. //获取响应内容
    7. String content = rep.body().string();

    获取二进制编码格式的内容

    1. import okhttp3.Response;
    2. //执行请求
    3. Response rep = call.execute();
    4. //获取二进制编码格式的内容
    5. byte[] datas = rep.body.bytes();

    解析JSON对象

    JSON对象较为复杂,所以学会解析很重要。
    放一个较为复杂的例子:
    下面是一部分JSON格式的数据,要求是取出第一首歌的 albumname 的值,也就是刀郎Ⅲ。

    1. {
    2. "code": 0,
    3. "data": {
    4. "keyword": "西海情歌",
    5. "priority": 0,
    6. "qc": [
    7. ],
    8. "semantic": {
    9. "curnum": 0,
    10. "curpage": 1,
    11. "list": [],
    12. "totalnum": 0
    13. },
    14. "song": {
    15. "curnum": 50,
    16. "curpage": 1,
    17. "list": [
    18. {
    19. "albumid": 14880,
    20. "albummid": "0024RXz94OSKCa",
    21. "albumname": "刀郎Ⅲ",

    分析一下嵌套的顺序是data->song->list->0号元素->albumname; list是一个集合,集合里面放的是对象,所以要先取出第一个对象,也就是list的0号元素。

    1. import com.alibaba.fastjson.JSON;
    2. import java.util.Map;
    3. import java.util.List;
    4. //先将其转换为Map对象,content是JSON格式的内容
    5. Map contentObj = JSON.parseObject(content,Map.class);
    6. //取出data,因为Map可以存储任何对象,所以要指定实际类型
    7. Map data = (Map)contentObj.get("data");
    8. //取出song
    9. Map song = (Map)data.get("song");
    10. //取出list。注意list的类型是List
    11. List list = (List)song.get("list");
    12. //取出list集合的0号元素,0号元素是Map类型
    13. Map list0 = (Map)list.get(0);
    14. //最后取出albumname字段的值
    15. String albumname = (String)list0.get("albumname");