OKHttp3的坑
-
java.lang.IllegalStateException:closed,java.lang.IllegalStateException: closed
原因为:OkHttp请求回调中response.body().string()只能有效调用一次,检查代码,的确调用了两次
-
Expected URL scheme ‘http’ or ‘https’ but no colon was found
public static final String REQUEST_URL = ""; final HttpRequest request = new HttpRequest(REQUEST_URL);
URL暂时写了"",HttpRequest代码长这样:
public class HttpRequest { private Call mcall; public HttpRequest(String url){ OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .get() .url(url) .build(); mcall = client.newCall(request); } public void request(Callback callback){ if(mcall!=null){ if(mcall.isExecuted()){ mcall.clone().enqueue(callback); }else { mcall.enqueue(callback); } } } }
真没想到会报这个错误,想着请求都还没发,草率了
-
OKHttp3的兼容性问题,Static interface methods are only supported starting with Android N (–min-api 24)
网上的解决方案是在app module的build.gradle中添加:android { // ... compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } // ... }
添加完成后在小米4C上依旧存在问题,果断降低了版本,采用了3.12.1
implementation 'com.squareup.okhttp3:okhttp:3.12.1'