Android应用开发中一般会用到访问网络请求,可以使用socket,webservice等。这里我只是用java中URL,传送数据方式采用json,不考虑数据加密问题。封装的工具类很简单,只提供post,get方法。由于androidUI主线程中不允许启动线程,这里使用FutrueTask启动线程获得返回结果。代码如下:
public class HttpUtil { /** * get方式访问服务器 * @param url * @param params * @return * @throws Exception */ public static String get(final String url, final Map<String, Object> params)throws Exception{ String r = null; FutureTask<String> task = new FutureTask<String>(new Callable<String>() { @Override public String call() throws Exception { BufferedReader bufferedReader = null; String result = null; try { String getUrl = url + "?" + getParams(params); Log.i("ApplicationTest", getUrl); URL realUrl = new URL(getUrl); URLConnection connection = realUrl.openConnection(); connection.connect(); bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream())); String line = null; StringBuffer sb = new StringBuffer(); while((line = bufferedReader.readLine())!=null){ sb.append(line); } result = sb.toString(); } catch (IOException e) { Log.i("ApplicationTest", "xxxxx1"); e.printStackTrace(); throw e; }finally { if(bufferedReader != null){ try { bufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } }); new Thread(task).start(); try { r = task.get(); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } return r; } /** * post方式访问服务器 * @param url * @param params * @return * @throws Exception */ public static String post(final String url, final Map<String, Object> params)throws Exception{ String r = null; FutureTask<String> task = new FutureTask<String>(new Callable<String>() { @Override public String call() throws Exception { String result = null; BufferedReader bufferedReader = null; PrintWriter out = null; try { String getUrl = url; URL realUrl = new URL(getUrl); URLConnection connection = realUrl.openConnection(); connection.setDoOutput(true); connection.setDoInput(true); out = new PrintWriter(connection.getOutputStream()); out.print(getParams(params)); out.flush(); bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream())); String line = null; StringBuffer sb = new StringBuffer(); while((line = bufferedReader.readLine())!=null){ sb.append(line); } result = sb.toString(); } catch (IOException e) { e.printStackTrace(); throw e; }finally { if(bufferedReader != null){ try { bufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } }); new Thread(task).start(); try { r = task.get(); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } return r; } /** * 组装请求参数 * @param params * @return */ private static String getParams(Map<String, Object> params){ StringBuffer sb = new StringBuffer(); if(params != null){ for(String key : params.keySet()){ sb.append(key).append("=").append(params.get(key).toString()).append("&"); } if(sb.indexOf("&") == sb.length()-1){ sb.deleteCharAt(sb.length()-1); } } return sb.toString(); } }
如果使用HttpClient工具包,代码会更简单。这里就不列出。
相关推荐
AndroidHttpTools 是简单的 HTTP 请求工具,支持 get,post,post 文件。 //------------------------简单示例------------------------//String url = "http://www.baidu.com/"; private void requestData()...
dowanload demo 单线程下载 断点下载,简单好用的下载工具 使用原生HttpUrlConnection AsyncTask 模仿手机应用市场
Android应用源码使用Vitamio框架的网络在线电视直播 Android应用源码全能网络视频播放器 Android应用源码单机版电子阅读器 Android应用源码可以直接发邮件的简洁课程表项目源码 Android应用源码可以管理U盘的文件...
Common4Android是一个通用Android工具库,包含网络库、线程管理器、常用Util工具、热修复,它拥有良好的架构,低耦合、高内聚,使用起来非常轻松。 -基类 ClassName Description ...
Android SDK:作为开发环境,提供了丰富的API和工具来构建Android应用。 Java/Kotlin:作为主要编程语言,用于编写应用的逻辑和用户界面。 Material Design:作为界面设计指南,确保应用界面的一致性和现代感。 ...
手机端抓包工具,可以抓取指定应用的网络请求,也可以抓取手机全部请求。偶尔开发时需要查看服务端返回数据是否异常是可以使用该APP抓包
如网络下载,多线程与线程池的管理,数据库ORM,图片缓存管理,图片文件下载上传,Http请求工具,SOAP工具类,异步Task,常用工具类(字符串,日期,文件处理,图片处理工具) 开发工具在软件开发生命周期中扮演着...
如网络下载,多线程与线程池的管理,数据库ORM,图片缓存管理,图片文件下载上传,Http请求工具,SOAP工具类,异步Task,常用工具类(字符串,日期,文件处理,图片处理工具类等),能够使您的应用在团队开发中减少...
13.2.3 使用am工具启动android应用程序 306 13.3 android应用程序示例 308 13.3.1 helloactivity程序 308 13.3.2 helloactivity的源代码结构 308 13.3.3 helloactivity的编译结构(源代码开发) 312 13.3.4 ...
XHttp2 一个功能强悍的网络请求库,使用RxJava2 + Retrofit2 + OKHttp组合进行封装。 除此之外,还集成了其他优秀的第三方库: butterknife 控件依赖注入框架: https://github.com/JakeWharton/butterknife ...
提供集成开发环境(IDE),如Visual Studio、Eclipse、Android Studio和Sublime Text等,这些工具集成了文本编辑器,支持语法高亮、自动补全、代码片段管理和版本控制等功能,有助于开发者高效编写和维护代码。...
Android应用程序安全工具 测试移动应用程序的安全漏洞是一项艰巨的任务。 有许多目标领域需要分析,其中很多是手动的。 ShadowOS是一种工具,可帮助安全测试人员评估移动应用程序的漏洞。 这是一个自定义创建的...
涵盖了安卓开发的各个方面。...网络通信:介绍如何在安卓应用程序中进行网络通信,包括HTTP请求、WebSocket、Retrofit等网络库的使用。 多媒体处理:介绍如何在安卓应用程序中处理多媒体内容,如图片、音频、
Charles是一款基于应用层http协议抓包的工具,借助这款工具,测试人员可以进行http/https数据抓包,包括对android和ios移动端的数据请求,以及web端的数据请求,从而验证是否满足需求。甚至,通过charles的断点功能...
1.2 Android应用程序参考书籍 1.3 下载、编译和运行Android源代码 1.3.1 下载Android源代码 1.3.2 编译Android源代码 1.3.3 运行Android模拟器 1.4 下载、编译和运行Android内核源代码 1.4.1 下载...
爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL...
在Windows操作系统上搭建开发环境,所使用的开发工具为Android Studio,使用Java语言,工具包使用JDK1.7或1.8。 1. 仿效教材第24章例子,开发展示NASA的火星探测器所拍摄照片的app 2. 利用持久化保存技术对网络...
第13章“Android应用程序概述及框架”,介绍Android应用程序层的基本概念和应用程序框架,这部分内容是Android自下而上的第4个层次,可以基于源代码或者SDK开发,它们之间的差别非常小。 第14章“Android应用...
ThinkAndroid是一个免费的开源的、简易的、遵循Apache2开源协议发布的Android开发框架,其开发宗旨是简单、快速的进行 Android应用程序的开发,包含Android mvc、简易sqlite orm、ioc模块、封装Android httpclitent...