基本用法示例

我喜欢把我的 OkHttp 包装成一个名为 HttpClient 的类,在这个类中,我有最常用的每个主要 HTTP 动词 postgetputdelete 的方法。 (我通常包含一个接口,以便保持它的实现,以便能够轻松地更改为不同的实现,如果需要):

public class HttpClient implements HttpClientInterface{

private static final String TAG = OkHttpClient.class.getSimpleName();
public static final MediaType JSON
        = MediaType.parse("application/json; charset=utf-8");

OkHttpClient httpClient = new OkHttpClient();

@Override
public String post(String url, String json) throws IOException {
    Log.i(TAG, "Sending a post request with body:\n" + json + "\n to URL: " + url);

    RequestBody body = RequestBody.create(JSON, json);
    Request request = new Request.Builder()
            .url(url)
            .post(body)
            .build();
    Response response = httpClient.newCall(request).execute();
    return response.body().string();
}

除了 1 个单词(.put(body))之外,putgetdelete 的语法是相同的,所以发布该代码也可能是令人讨厌的。用法非常简单,只需使用 json 有效负载调用某些 url 上的相应方法,该方法将返回一个字符串,以便稍后使用和解析。让我们假设响应将是一个 json,我们可以轻松地创建一个 JSONObject

String response = httpClient.post(MY_URL, JSON_PAYLOAD);
JSONObject json = new JSONObject(response);
// continue to parse the response according to it's structure