Android(安卓)使用OKHttp3请求接口401,返回Authorization Required错误解决
16lz
2021-01-26
公司项目需要接入香港天文台的天气xml,API是http://xml.weather.gov.hk/V2/
需要账号密码,机场那边提供过来之后,发现app内请求会报401,Authorization Required错误。
话不多说,直接上代码:
OkHttpClient.Builder client = new OkHttpClient.Builder();client.authenticator(new Authenticator() { @Override public Request authenticate(Route route, okhttp3.Response response) throws IOException { if (responseCount(response) >= 3) { return null; } String credential = Credentials.basic("userName", "passWord"); return response.request().newBuilder().header("Authorization", credential).build(); }});
Request request = new Request.Builder().get().url(url).build();
client.build().newCall(request).enqueue(new okhttp3.Callback() { @Override public void onFailure(okhttp3.Call call, IOException e) { } @Override public void onResponse(okhttp3.Call call, okhttp3.Response response) { if (response.isSuccessful())// LogUtils.error(TAG, "Successful"); } });
private int responseCount(okhttp3.Response response) { int result = 1; while ((response = response.priorResponse()) != null) { result++; } return result;}
参考资料:
https://square.github.io/okhttp/2.x/okhttp/com/squareup/okhttp/Authenticator.html
更多相关文章
- Android(安卓)Studio 启动安卓模拟器时,报VT-x is disabled in BI
- Android高低API版本兼容之@TargetApi
- mac adb配置 及zsh 配置
- Android开发之自定义Notification(源代码分享)
- android https 连接建立
- Android获得相机的所有信息
- SharePreference封装使用
- android中fragment在后台回收时的生命周期
- Android蓝牙