OKHttpClient 简单封装

本文介绍了一个用于处理HTTPS请求的管理器类的实现,包括GET和POST方法的调用,通过OkHttp库进行网络请求,同时展示了如何在Activity中使用这个管理器来获取服务器响应。

public class HttpsManager {

    private volatile static HttpsManager manager = null;

    public interface HttpListener {
        void requestFinish(String reponse);
        void requestError(Exception e);
    }

    public static HttpsManager getInstance() {
        if (manager == null) {
            synchronized (HttpsManager.class) {
                if (manager == null) {
                    manager = new HttpsManager();
                }
            }
        }
        return manager;
    }

    public void getMethod(String url, final HttpListener mListener) {
        Request request = new Request.Builder().url(url).build();
        OkHttpClient okHttpClient = new OkHttpClient();
        Call call = okHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                mListener.requestError(e);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                mListener.requestFinish(response.body().string());
            }
        });
    }

    /**
     * @param url
     * @param body
     */
    public void postMethod(String url, RequestBody body, final HttpListener mListener) {
        Request request = new Request.Builder().url(url).post(body).build();
        OkHttpClient okHttpClient = new OkHttpClient();
        Call call = okHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                mListener.requestError(e);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                mListener.requestFinish(response.body().string());

            }
        });
    }
}

/**
 * RequestBody
 * FormBody.Builder builder = new FormBody.Builder()
 * builder.add("", ""); key-value
 */

/**
 * 请求服务器地址
 * String url = "";
 * // 创建okhttp 端口
 * OKHttpClient client = new OKHttpClient();
 * // 创建要发送的请求 (这里创建的是没有参数的GET请求)
 * Request request = new Request.Builder().url(url),build();
 * Call call = okHttpClient.newCall(request);
 * // CallBack是请求回调
 * call.enqueue(new Callback() {
 * @Override
 * // 请求失败执行的方法
 * public void onFailure(Call call, IOException e) {
 *     // 这里的失败指的是没有网络请求发送不出去, 或者请求地址有误找不到服务器这类情况
 *
 * }
 *
 * @Override
 * public void onResponse(Call call, Response response) throws IOException {
 *         // 请求成功以后的操作在这个方法里执行,并且这是个子线程,不能做更新界面的操作
 *         runOnUiThread(new Runnable() {
 *             @Override
 *             public void run() {
 *                 // 如果有更新UI的操作,需要自己写runOnUiThread这一类的方法去执行
 *             }
 *         });
 *     }

 * })
 */

在Activity 里简单实用
public class HttpActivity {
	 	String userLogin = "http://101.200.193.60:9098/api/BaseInfo/UserLogin?UserName=nxdjn&Pwd=123456";
        HttpsManager.getInstance().getMethod(userLogin, new HttpsManager.HttpListener() {
            @Override
            public void requestFinish(String response) {
                Log.e(TAG, "请求结果" + response);
                try {
                	// ZPLogin 自定义的model
                    ZPLogin mLogin = new Gson().fromJson(new JSONObject(response).getString("data"), new TypeToken<ZPLogin>(){}.getType());

                    Log.e(TAG, "用户 id" + mLogin.getUserID());

                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void requestError(Exception e) {

            }
        });
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值