OkHttpClient "open" 方法在 v2.0 中缺失

OkHttpClient "open" method missing in v2.0

如果您从 OkHttp 库从 1.x 升级到 2.x,显然缺少 OkHttpClient 方法 "open"。以下代码将无法编译。

        OkHttpClient client = new OkHttpClient();
        HttpURLConnection conn = client.open(url);

根据官方change log:

URLConnection 支持已移至 okhttp-urlconnection 模块。如果您是从 1.x 升级,此更改会对您产生影响。您需要将 okhttp-urlconnection 模块添加到您的项目中,并使用 OkUrlFactory 创建 HttpURLConnection 的新实例:

// OkHttp 1.x:
HttpURLConnection connection = client.open(url);

// OkHttp 2.x:
HttpURLConnection connection = new OkUrlFactory(client).open(url);

只记得将下面的依赖项添加到 Gradle 文件中。

compile 'com.squareup.okhttp:okhttp-urlconnection:2.5.0'

从 OkHttp 3.x 开始,OkUrlFactory 已被标记为已弃用,支持更灵活的新 Request/Response 调用方式。一些信息:https://publicobject.com/2015/12/15/okurlfactory-is-going-away/

所以新样式看起来更像:

OkHttpClient httpClient = new OkHttpClient()

Request request = Request.Builder()
    .url(url)
    .build()
Response response = httpClient.newCall(request).execute()