okHttp網路工具類的封裝
阿新 • • 發佈:2018-12-16
public class HttpHelper { private HttpRequestListener listener; private static final int SUCCESS_REQUEST = 1; private static final int FAIL_REQUEST = 0; public void setListener(HttpRequestListener listener) { this.listener = listener; } public HttpHelper doGet(String url) { OkHttpClient okHttpClient = new OkHttpClient(); Request request = new Request.Builder().get().url(url).build(); doHttp(okHttpClient, request); return this; } public HttpHelper doPost(String url, RequestBody body) { OkHttpClient okHttpClient = new OkHttpClient(); Request request = new Request.Builder().post(body).build(); doHttp(okHttpClient, request); return this; } private void doHttp(OkHttpClient okHttpClient, final Request request) { final Message msg = Message.obtain(); okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { Log.d("TAG", "失敗"); msg.what = FAIL_REQUEST; msg.obj = e.getMessage(); handler.sendMessage(msg); } @Override public void onResponse(Call call, Response response) throws IOException { if (response.isSuccessful()) { InputStream stream = response.body().byteStream(); String data = CharStreams.toString(new InputStreamReader(stream, "utf-8")); msg.what = SUCCESS_REQUEST; msg.obj = data; handler.sendMessage(msg); } } }); } private final Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case SUCCESS_REQUEST: String data = (String) msg.obj; listener.successRequest(data); break; case FAIL_REQUEST: String mess = (String) msg.obj; listener.fail(mess); break; } } }; }
介面的實現
public interface HttpRequestListener {
void successRequest(String data);
void fail(String msg);
}