Retrofit 2 拦截器具有私有访问权限
Retrofit 2 interceptors has private access
我正在关注这个 post:http://inthecheesefactory.com/blog/retrofit-2.0/en
并尝试按如下方式添加拦截器:
package test.com.testretrofit2;
import com.squareup.okhttp.Interceptor;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Response;
import java.io.IOException;
public class InterceptorTest {
OkHttpClient client = new OkHttpClient();
client.interceptors().add(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Response response = chain.proceed(chain.request());
// Do anything with response here
return response;
}
});
}
不过就行了
client.interceptors().add(new Interceptor() {
我收到一个错误
'interceptors' has private access in com.squareup.okhttp.OkHttpClient.
我正在使用
com.squareup.retrofit:retrofit:2.0.0-beta1
它正在引入 okhttp-2.5.0。我查看了 OkhttpClient.java,interceptors() 是 public。
我是否使用了错误的 Retrofit 2.0 库或版本?
编辑(事情的真相)--
您的代码需要在方法中,而不仅仅是在 class。
public class InterceptorTest {
void myTest() {
OkHttpClient client = new OkHttpClient();
client.interceptors().add(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Response response = chain.proceed(chain.request());
// Do anything with response here
return response;
}
});
}
}
编辑(另一种可能性)--
事实证明,如果在此代码之前的代码中有未终止的范围,您也会看到此错误。例如,
new Thread(new Runnable() {
@Override
public void run() {
});
client.interceptors().add(new SigningInterceptor());
将显示您在 IDE 中指出的错误,但会在编译时给出更多错误。请注意,此示例中 Runnable
未正确终止。它缺少 }
。检查以确保您的 {}
在它们应该在的位置。
原始选项 --
您的错误与您发布的代码不匹配。如果该函数具有私有访问权限,您应该会收到一条错误消息 --
'interceptors()' has private access in com.squareup.okhttp.OkHttpClient.
注意 ()。
在这种情况下很重要,因为 OkHttpClient
有一个名为 interceptors
的私有成员,但是 public interceptors()
方法。
人们会预料到您在这一行看到的错误 --
client.interceptors.add(new Interceptor() {
请注意 interceptors
之后缺少的 ()。仔细检查您调用 interceptors
的所有地方的代码,看看您是否遗漏了括号。
我正在关注这个 post:http://inthecheesefactory.com/blog/retrofit-2.0/en
并尝试按如下方式添加拦截器:
package test.com.testretrofit2;
import com.squareup.okhttp.Interceptor;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Response;
import java.io.IOException;
public class InterceptorTest {
OkHttpClient client = new OkHttpClient();
client.interceptors().add(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Response response = chain.proceed(chain.request());
// Do anything with response here
return response;
}
});
}
不过就行了
client.interceptors().add(new Interceptor() {
我收到一个错误
'interceptors' has private access in com.squareup.okhttp.OkHttpClient.
我正在使用
com.squareup.retrofit:retrofit:2.0.0-beta1
它正在引入 okhttp-2.5.0。我查看了 OkhttpClient.java,interceptors() 是 public。
我是否使用了错误的 Retrofit 2.0 库或版本?
编辑(事情的真相)--
您的代码需要在方法中,而不仅仅是在 class。
public class InterceptorTest {
void myTest() {
OkHttpClient client = new OkHttpClient();
client.interceptors().add(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Response response = chain.proceed(chain.request());
// Do anything with response here
return response;
}
});
}
}
编辑(另一种可能性)--
事实证明,如果在此代码之前的代码中有未终止的范围,您也会看到此错误。例如,
new Thread(new Runnable() {
@Override
public void run() {
});
client.interceptors().add(new SigningInterceptor());
将显示您在 IDE 中指出的错误,但会在编译时给出更多错误。请注意,此示例中 Runnable
未正确终止。它缺少 }
。检查以确保您的 {}
在它们应该在的位置。
原始选项 --
您的错误与您发布的代码不匹配。如果该函数具有私有访问权限,您应该会收到一条错误消息 --
'interceptors()' has private access in com.squareup.okhttp.OkHttpClient.
注意 ()。
在这种情况下很重要,因为 OkHttpClient
有一个名为 interceptors
的私有成员,但是 public interceptors()
方法。
人们会预料到您在这一行看到的错误 --
client.interceptors.add(new Interceptor() {
请注意 interceptors
之后缺少的 ()。仔细检查您调用 interceptors
的所有地方的代码,看看您是否遗漏了括号。