Github弃用
url "https://api.github.com/user/repos?access_token=my_access_token"
的调用方式;
遇到问题:使用OkHttp查询user时,返回值为null
原本的访问方式:
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.github.com/user?access_token="+accessToken)
.build();
该方法已弃用,官方解释如下图,需将token放到header内进行传参
解决方法:
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.github.com/user?")
.header("Authorization","token "+ accessToken)
.build();
注意:header里面的token有空格;具体若不加空格会不会访问成功,测试了几次都没有成功读取。所以还是加吧!
若还没解决,那么可能你有和我相同的bug:
在码匠的视频中,对于读到的request进行了如下处理:
try {
Response response = client.newCall(request).execute();
String string = response.body().string();
//System.out.println(string);
GithubUser githubUser = JSON.parseObject(string, GithubUser.class);
return githubUser;
} catch (IOException e) {
}
代码中,使用了JSON.parseObject()这个方法,将string转换为githubuser类,但此时从github中读来的user信息不再是原来的name,bio;因此无法做到对应匹配,所以需要对GithubUser类中的变量名进行修改,改为对应的:
private String login;//name
private Long id;
private String node_id;//bio
此时,返回的gihubUser对象才不为null,所以返回null的原因有多个,注意排查。
困扰了一些时间,希望能帮到后面的兄弟。
最后,呜呜呜呜~