从零开始写Http框架---第三篇
2016-03-15 22:56
316 查看
本篇概述:
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(); } } @Override public void run() { sendRequest(); } }
查看源码
相关文章推荐
- BZOJ 2502 清理雪道 有上下界的网络流
- Xcode7编译打包后,iOS9设备无法打开http网址的问题
- WIN10 IIS 配置https
- 关于HTTPS的一些基础知识
- [转]TOMCAT原理以及处理HTTP请求的过程、ContextPath ServletPath
- 网络流基础
- VirtualBox虚拟机网络设置
- HTTP第一篇:HTTP简介
- iOS如何获取网络图片(一)
- Android使用Http协议访问网络
- 路由协议RIP、EIGRP、OSPF
- 从零开始写Http框架---第二篇
- springMVC No mapping found for HTTP request with URI
- 使用okhttp报错"Missing type parameter"
- java SE基础(TCP Socket通信)
- http和https的差别
- TCP的流量控制
- python之网络爬虫
- java SE基础(URL访问网络资源)
- HTTP 单线程 模拟迅雷下载