我正在使用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中潜在的错误?