okhttp請求示例程式碼
阿新 • • 發佈:2018-12-12
package com.sample.httControler; import android.content.Context; import android.text.TextUtils; import org.json.JSONObject; import java.io.IOException; import java.util.List; import java.util.concurrent.TimeUnit; import okhttp3.Call; import okhttp3.Callback; import okhttp3.FormBody; import okhttp3.MediaType; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; public class HttpControler { private static OkHttpClient okHttpClient; public static void init() { okHttpClient = new OkHttpClient.Builder() .connectTimeout(10000L, TimeUnit.MILLISECONDS) .readTimeout(10000L, TimeUnit.MILLISECONDS) .build(); } private Context mContext; public HttpControler(Context context) { mContext = context; } public void initHeader() { } public void cancle() { } //提交json public void post(String json, String url, NetCallback netCallback) { if (TextUtils.isEmpty(json)) { json = new JSONObject().toString(); } MediaType mediaType = MediaType.parse("application/json; charset=utf-8"); RequestBody body = RequestBody.create(mediaType, json); Request request = new Request.Builder() .url(url) .post(body) .build(); okHttpClient.newCall(request).enqueue(new OkCallback(netCallback)); } public void post(String url, final NetCallback netCallback) { FormBody.Builder mBuilder = new FormBody.Builder(); RequestBody mRequestBody = mBuilder.build(); Request.Builder requestBuilder = new Request.Builder().url(url); requestBuilder.post(mRequestBody); okHttpClient.newCall(requestBuilder.build()).enqueue(new OkCallback(netCallback)); } public void post(List<NamePiarValue> list, String url, final NetCallback netCallback) { if (list != null && list.size() > 0) { FormBody.Builder mBuilder = new FormBody.Builder(); for (int i = 0; i < list.size(); i++) { NamePiarValue namePiarValue = list.get(i); mBuilder.add(namePiarValue.getKey(), namePiarValue.getValue()); } RequestBody mRequestBody = mBuilder.build(); Request.Builder requestBuilder = new Request.Builder().url(url); requestBuilder.post(mRequestBody); okHttpClient.newCall(requestBuilder.build()).enqueue(new OkCallback(netCallback)); } } public void get(String url, final NetCallback netCallback) { Request request = new Request.Builder().url(url).build(); okHttpClient.newCall(request).enqueue(new OkCallback(netCallback)); } public void get(List<NamePiarValue> list, String url, final NetCallback netCallback) { if (list != null && list.size() > 0) { StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < list.size(); i++) { NamePiarValue namePiarValue = list.get(i); if (i == 0) { stringBuilder.append("?"); } stringBuilder.append(namePiarValue.getKey()); stringBuilder.append("="); stringBuilder.append(namePiarValue.getValue()); if (i != list.size() - 1) { stringBuilder.append("&"); } } Request request = new Request.Builder().url(url + stringBuilder.toString()).build(); okHttpClient.newCall(request).enqueue(new OkCallback(netCallback)); } else { get(url, netCallback); } } private class OkCallback implements Callback { private NetCallback netCallback; public OkCallback(NetCallback netCallback) { this.netCallback = netCallback; } @Override public void onFailure(Call call, IOException e) { if (netCallback != null) { if (call.isCanceled()) { netCallback.cancled(); } else { netCallback.fail(e.getMessage()); } } } @Override public void onResponse(Call call, Response response) throws IOException { if (netCallback != null) { if (call.isCanceled()) { netCallback.cancled(); } else { if (response.isSuccessful()) { String string = response.body().string(); netCallback.success(string); } } } } } }