从零开始写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
- 从零开始写Http框架---第三篇
- 从零开始写Http框架---外篇---第三方网络库
- 从零开始写Http框架---第二篇
- 从零开始写Http框架---第四篇
- 从零开始写http框架---第一篇
- 从零开始写jQuery框架
- jQuery框架 从零开始写
- 从零开始写JavaScript框架
- 从零开始做远控 第三篇
- 自己动手写HTTP框架:异步任务篇
- 从零开始写一个框架的详细步骤
- 从零开始写C# MVC框架之--- 开篇
- 从零开始写JavaScript框架(一)
- 架构探险 从零开始写javaweb框架
- 从零开始写一个框架的详细步骤
- 《从零开始写Javaweb框架》知识点--配置文件读取
- 《从零开始写Javaweb框架》知识点--dispatcherServlet
- 从零开始学写HTTP服务器(一)http协议简介
- DP(2)
- 有向图的拓扑排序
- Spring注解
- 《Effective C++》学习笔记——条款42
- 仿网易/今日头条滑动视图
- 从零开始写Http框架---第三篇
- verilog hdl 分频器
- Hbase的API使用
- CodeFOrces 625C - K-special Tables
- Android ListView 图片异步加载和图片内存缓存
- 对照Java学习Swift--集合类型
- plist 文件的增删改查 例子
- Apache Hive integration with Elasticsearh
- 第一次c++上机报告--1