okhttp在调用interceptor.intercept(chain)时抛出NullPointerException

时间:2019-05-10 08:48:52

标签: java nullpointerexception okhttp

我正在使用swaggercodegen生成的代码来访问REST Web服务。它使用okttp 2.7.5库进行基本的HTTP通信。这会连续抛出java.lang.NullPointerException例如下面的堆栈跟踪:

java.lang.NullPointerException
at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:232)
at com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:205)
at com.squareup.okhttp.Call.execute(Call.java:80)

似乎有问题的行是下面的第二行:

Interceptor interceptor = client.interceptors().get(index);
Response interceptedResponse = interceptor.intercept(chain);

现在,仅当拦截器为null时,它才会在第二行上抛出NullPointerException。不确定为什么要从列表中获取一个为null的对象?

值得注意的是,我们正在设置自定义拦截器,以从请求中删除Content-Type标头,如下所示:

api.getApiClient().getHttpClient().interceptors().add(new Interceptor() {
    @Override
    public Response intercept(Chain chain) throws IOException {
        Request newRequest = chain
            .request()
            .newBuilder()
            .removeHeader("Content-Type")
            .build();
        return chain.proceed(newRequest);
    }
});

上述方法是从非静态方法调用的。

对我在做什么错有任何见解?还是在okhttp中潜在的错误?

0 个答案:

没有答案