从零开始写Http框架---第三篇

来源:互联网 发布:蚌埠淘宝美工招聘 编辑:程序博客网 时间:2024/05/22 06:55

本篇概述:

1 使用Nodejs写一个简易的API接口,支持Get、Post、Put、Patch、Delete五种方法,并部署在自己服务器,供大家调用2 在Client端支持上述五种请求,并返回请求时带的参数

Activity代码主要如下:

1 Activity添加按钮,并给按钮添加监听事件

HttpUtil修改如下:

public class HttpUtil {    /**     * Get请求     */    public static void get(String rootPath, RequestParams params, final LincolnCallBack<JSONObject> callBack) {        String rootUrl = GlobalUtil.ROOTURL.concat(rootPath);        rootUrl = UrlUtil.dealGetParams(rootUrl, params);        TaskController taskController = TaskController.registrInstance();        taskController.start(rootUrl, HttpMethod.GET, params, callBack);    }    /**     * Post请求     */    public static void post(String rootPath, RequestParams params, final LincolnCallBack<JSONObject> callBack) {        String rootUrl = GlobalUtil.ROOTURL.concat(rootPath);        TaskController taskController = TaskController.registrInstance();        taskController.start(rootUrl, HttpMethod.POST, params, callBack);    }    /**     * Put请求     */    public static void put(String rootPath, RequestParams params, final LincolnCallBack<JSONObject> callBack) {        String rootUrl = GlobalUtil.ROOTURL.concat(rootPath);        TaskController taskController = TaskController.registrInstance();        taskController.start(rootUrl, HttpMethod.PUT, params, callBack);    }    /**     * Patch请求     */    public static void patch(String rootPath, RequestParams params, final LincolnCallBack<JSONObject> callBack) {        String rootUrl = GlobalUtil.ROOTURL.concat(rootPath);        TaskController taskController = TaskController.registrInstance();        taskController.start(rootUrl, HttpMethod.PATCH, params, callBack);    }    /**     * Delete请求     */    public static void delete(String rootPath, RequestParams params, final LincolnCallBack<JSONObject> callBack) {        String rootUrl = GlobalUtil.ROOTURL.concat(rootPath);        TaskController taskController = TaskController.registrInstance();        taskController.start(rootUrl, HttpMethod.DELETE, params, callBack);    }}

线程管理类:

public class TaskController {    private static TaskController taskController;    private static ExecutorService executor;    private static int MAX_THREAD_COUNT= 10;    public static TaskController registrInstance(){        if (taskController == null) {            synchronized (TaskController.class) {                if (taskController == null) {                    taskController = new TaskController();                    executor = Executors.newFixedThreadPool(MAX_THREAD_COUNT);                }            }        }        return taskController;    }    public <T> void  start(String rootUrl,HttpMethod method ,RequestParams params,LincolnCallBack<JSONObject> callback){        LogUtil.d("url:"+rootUrl);        HttpTask task = new HttpTask(rootUrl,method, params,callback);        executor.submit(task);    }}

任务线程类:

public class HttpTask implements Runnable{  private String rootUrl;private LincolnCallBack callBack;private HttpMethod method;private RequestParams params;public HttpTask(String rootUrl,HttpMethod method,RequestParams params,LincolnCallBack callback){    this.rootUrl = rootUrl;    this.callBack = callback;    this.params = params;    this.method = method;}public void sendRequest(){    try {        URL url = new URL(rootUrl);        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();        urlConnection.setRequestMethod(method.toString());        if (method != HttpMethod.GET) {            urlConnection.setDoOutput(true);            byte[] bytes = params.toString`这里写代码片`().getBytes();            urlConnection.getOutputStream().write(bytes);        }        urlConnection.connect();        InputStream inputStream = urlConnection.getInputStream();        ByteArrayOutputStream byteOutSteam = new ByteArrayOutputStream();        byte[] buffer = new byte[1024];        int length = -1;        while ((length = inputStream.read(buffer)) != -1) {            byteOutSteam.write(buffer, 0, length);        }        String resultString = byteOutSteam.toString();        JSONObject object = new JSONObject(resultString);        callBack.onSuccess(null, object);    } catch (Exception e) {        e.printStackTrace();    }}@Overridepublic void run() {    sendRequest();}}

查看源码

0 0
原创粉丝点击