androidhttp框架
‘壹’ android开发一般都使用什么框架
目前框架使用的主要都是开源框架,都可以在github上找到:
1、volley
2、android-async-http
3、Afinal框架
4、xUtils框架
5、ThinkAndroid
6、LoonAndroid
主要有以下模块:
(1) 自动注入框架(只需要继承框架内的application既可)
(2)
图片加载框架(多重缓存,自动回收,最大限度保证内存的安全性)
(3) 网络请求模块(继承了基本上现在所有的http请求)
(4)
eventbus(集成一个开源的框架)
(5) 验证框架(集成开源框架)
(6) json解析(支持解析成集合或者对象)
(7) 数据库(不知道是哪位写的 忘记了)
(8) 多线程断点下载(自动判断是否支持多线程,判断是否是重定向)
(9)
自动更新模块
(10) 一系列工具类
‘贰’ 框架android-async-http 服务器怎么接受文件
在服务端,比如servlet,从requset里拿到inputStream,从流里面读取,然后生成文件
‘叁’ 说说在 Android 中如何发送 HTTP 请求
客户端会向服务器发出一条 HTTP 请求,服务器收到请求后会返回一些数据给客户端,然后客户端再对这些数据进行解析与处理。
可以使用 HttpURLConnection(官方推荐) 来发送 HTTP 请求。
布局文件:
活动类:
因为在 Android 中不允许在子线程中执行 UI 操作,所以我们通过 runOnUiThread 方法,切换为主线程,然后再更新 UI 元素。
最后记得声明网络权限哦:
OKHttp 是一个处理网络请求的开源项目,目前是 Android 最火热的轻量级框架,由移动支付 Square 公司贡献(该公司还贡献了Picasso)。希望替代 HttpUrlConnection 和 Apache HttpClient。
首先引入 OKHttp 库依赖:
然后点击 Android Studio 右上角的 Sync Now,把库真正加载进来。
修改活动类:
可以在 build() 方法之前连缀很多其他方法来丰富这个 Request 对象。
如果是 POST 请求,那么需要构建 RequestBody 对象,形如:
修改活动类:
注意: new Thread(...) 之后需要执行 start() 才会启动线程哦。
运行:
可以看出,OKHttp 比 HttpURLConnection 更强大:同一个网址,OKHttp 能够正确地返回响应数据哦O(∩_∩)O哈哈~
‘肆’ android开发一般都使用什么框架
Android开发框架介绍
编辑文档
学分 +2
开发框架方面包含基本的应用功能开发、数据存储、网络访问这三大块:
一、应用方面
一般而言一个标准的Android程序由如下4部分组成即Activity、Broadcast Intent Receiver、Service、Content Provider: 1. Activity是最频繁、最基本的模块,在Android中,一个Activity就是手机上一屏,相当于一个网页一样,所不同的是,每个Activity运行结束了,有个返回值,类似一个函数一样。Android系统会自动记录从首页到其他页面的所有跳转记录并且自动将以前的Activity压入系统堆栈,用户可以通过编程的方式删除历史堆栈中的Activity Instance。
Activity类中主要是跟界面资源文件关联起来(res/layout目录下的xml资源,也可以不含任何界面资源),内部包含控件的显示设计、界面交互设计、事件的响应设计以及数据处理设计、导航设计等application设计的方方面面。 2. Broadcast Intent Receiver
Intent提供了各种不同Activity进行跳转的机制,譬如如果从A activity跳转到B activity,使用Intent来实现如下: Intent in = new Intent(A.this, B.class); startActivity(in);
BroadcastReceiver提供了各种不同的Android应用程序进行进行进程间通讯的机制,譬如当电话呼叫来临时,可以通过BroadcastReceiver发布广播消息。对于用户而言,BroadcastReceiver是不透明的,用户无法看到这个事件,BroadcastReceiver通过NotificationManager来通知用户这些事件发生了,它既可以在资源AndroidManifest.xml中注册,也可以在代码中通过Context.registerReceiver()进行注册,只要是注册了,当事件来临的时候,即时程序没有启动,系统也在需要的时候会自动启动此应用程序;另外各应用程序很方便地通过Context.sendBroadcast()将自己的事情广播给其他应用程序;
3. Service,跟Windows当中的Service完全是一个概念,用户可以通过startService(Intent service)启动一个Service,也可通过Context.bindService来绑定一个Service.
4. Content Provider,由于Android应用程序内部的数据都是私有的,Content Provider提供了应用程序之间数据交换的机制,一个程序可以通过实现一个ContentProvider的抽象接口将自己的数据暴露出去,并且隐蔽了具体的数据存储实现,标准的ContentProvider提供了基本的CRUD(Create,Read,Update,Delete)的接口,并且实现了权限机制,保护了数据交互的安全性; 一个标准的Android应用程序的工程文件包含如下几大部分: -> java源代码部分(包含Activity),都在src目录当中;
-> R.java文件,这个文件是Eclipse自动生成与维护的,开发者不需要修改,提供了Android对的资源全局索引; -> Android Library,这个是应用运行的Android库;
-> assets目录,这个目录里面主要用与放置多媒体等一些文件;
-> res目录,放置的是资源文件,跟VC中的资源目录基本类似,其中的drawable包含的是图片文件,layout里面包含的是布局文件,values目录里面主要包含的是字符串(strings.xml)、颜色(colors.xml)以及数组(arrays.xml)资源;
-> AndroidManifest.xml,这个文件异常重要,是整个应用的配置文件,在这个文件中,需要声明所有用到的Activity、Service、Receiver等。
‘伍’ android怎么用okhttp封装网络框架
封装只是为了能更加简单,仅此而已~
功能
UI 线程切换
可选择的Callback(任意选择UI线程或者子线程)
参数规范化,GET与POST都一样的传参方式
上传/下载进度回调
可以简单的设置Head部分
可以每次请求时自动加上需要的参数
String/JSON/byte/File… 都能一样简单
用法
由于辅助代码较多,在这里就不一一贴出来了,在这里仅仅演示如何使用。
异步GET
Http.getAsync("http://wthrcdn.etouch.cn/weather_mini", new UiCallback<String>() {
@Override
public void onFailure(Request request, Response response, Exception e) {
log("getAsync:onFailed");
}
@Override
public void onSuccess(String response, int code) {
log("getAsync:onSuccess:" + response);
}
}, new StrParam("citykey", 101010100)
);123456789101112
由于是 get 请求,在这里参数中的 citykey 会被自动解析到 url 中。
http://wthrcdn.etouch.cn/weather_mini?citykey=1010101001
同步GET
final String url = "http://wthrcdn.etouch.cn/weather_mini?citykey=101010100";
String str = Http.getSync(String.class, url);
log("getSync1:" + str);
str = Http.getSync(url, new ThreadCallback<String>() {
@Override
public void onFailure(Request request, Response response, Exception e) {
log("getSync2:onFailed");
}
@Override
public void onSuccess(String response, int code) {
log("getSync2:onSuccess:" + response);
}
});
log("getSync2:" + str);12345678910111213141516
同步方式支持两种情况,一种有Callback,一种是没有。
当然就算加上了Callback也并不是异步,此时方法会等到执行完成后才会继续往下走。之所以这么干,是为了方便在callback中直接处理ui的事儿。
在这里有必要说明一下,返回类型需要进行指定,如果没有Callback哪么需要你传入返回类型class。
当然如果你传入了callback,哪么此时class就由callback
Account account = Http.getSync(Account.class, url);
User user = Http.getSync(User.class, url);
String str = Http.getSync(String.class, url, new StrParam("citykey", 101010100));123
Callback 的情况也如上所示。
异步与同步的区别在于方法名称:
Http.getSync()
Http.getAsync()
Http.postSync()
Http.postAsync()
Http.uploadSync()
Http.uploadAsync()
Http.downloadSync()
Http.downloadAsync()
默认情况下,upload与download具有callProgress 回调进度功能。
POST
String value1 = "xxx";
String value2 = "xxx";
String url = "http://www..com";
Http.postAsync(url, new HttpCallback<String>() {
@Override
public void onFailure(Request request, Response response, Exception e) {
e.printStackTrace();
}
@Override
public void onSuccess(String response, int code) {
log(response);
}
},
new StrParam("value1", value1),
new StrParam("value2", value2));1234567891011121314151617
post 的请求方法与get基本如出一辙。
Upload
File file = getAssetsFile();
Http.uploadAsync("http://img.hoop8.com/upload.php", "uploadimg", file, new UiCallback<String>() {
@Override
public void onProgress(long current, long count) {
super.onProgress(current, count);
log("uploadAsync onProgress:" + current + "/" + count);
mUpload.setProgress((int) ((current * 100.00 / count)));
}
@Override
public void onFailure(Request request, Response response, Exception e) {
e.printStackTrace();
log("uploadAsync onFailed");
}
@Override
public void onSuccess(String response, int code) {
log("uploadAsync onSuccess:" + response);
}
});
上传部分也很简单,如果需要带有参数哪么和Post的使用方式一样。当然此时传入参数就不是 StrParam 而是 IOParam.
上传的时候你可以仅仅传递文件+文件对应的name;或者 传递 IOParam; 也可以 StrParam+IOParam的方式;当然终极一点你可以传递:Param 类型。