改装时禁用 SPDY 连接

Disable SPDY connection on retrofit

我在 android 项目中使用改造,问题是当用户连接到代理或 VPN 时,从 HTTP REST API 查询的 IP 地址不会因连接重用而改变.

日志显示它正在使用 SPDY - OkHttp-Selected-Protocol: spdy/3.1 是否可以要求改造以使用 HTTP 1.1 或在指定路由上禁用连接 reuse/SPDY 或整个改造而不触及服务器端?

以前使用okhttp时,我在每次调用之前都使用下面的方法。 (这是一个非常糟糕的主意)

ConnectionPool pool = ConnectionPool.getDefault();
pool.evictAll();

要禁用 SPDY,您可以使用 setProtocols:

ArrayList<Protocol> protocolList = new ArrayList<Protocol>();
protocolList.add(Protocol.HTTP_1_1);

OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setProtocols(protocolList);

RestAdapter restAdapter = new RestAdapter.Builder()
    .setEndpoint(API_URL)
    .setClient(new OkClient(okHttpClient))
    .build();