AndroidStudio下使用Retrofit进行网络请求
来源:互联网 发布:淘宝上如何申请换货 编辑:程序博客网 时间:2024/05/21 19:47
环境要求
Android 2.3及以上版本 Java 6及以上版本配置
GRADLE配置文件下添加引用1.
<code
class
=
" hljs r"
>
2.
dependencies {
3.
...
4.
compile
'com.squareup.retrofit:retrofit:1.9.0'
5.
...
6.
}
7.
</code>
当OkHttp存在时,Retrofit会使用OkHttp来进行网络请求,使用OkHttp的添加引用如下
1.
<code
class
=
" hljs r"
>dependencies {
2.
...
3.
compile
'com.squareup.okhttp:okhttp-urlconnection:2.0.0'
4.
compile
'com.squareup.okhttp:okhttp:2.0.0'
5.
...
6.
}</code>
发起请求
下面的例子是使用Retrofit进行一次简单的异步GET请求,返回的值为String类型
首先定义一个接口,在接口中声明一个方法来定义请求的相关内容
1.
<code
class
=
" hljs d"
>
interface
User {
2.
@GET
(
"/user/list.json"
)
3.
void
getUsers(
@Query
(
"pagesize"
)
int
pagesize, Callback<String> callback);
4.
}
5.
</code>
@GET表明该请求为GET方式,除此之外还有@POST, @PUT, @DELETE, 和@HEAD,具体的作用请参考官方文档,由于篇幅原因,这里不再叙述。
@Query为参数声明
Callback< String > 为回调接口,String表明返回数据结果就为String类型
然后创建一个RestAdapter对象,代码如下
1.
<code
class
=
" hljs avrasm"
>RestAdapter restAdapter =
new
RestAdapter.Builder()
2.
.setEndpoint(CTX).setConverter(
new
BaseConverter())
3.
.build();</code>
setEndpoint方法指定了请求地址的前半部分,即服务器地址,如 https://api.github.com
setConverter方法需要一个转换接口的实现类作为参数,该类的作用是将请求得到的InputStream转换为想要的类型,示例代码如下
01.
<code
class
=
" hljs java"
>
public
class
BaseConverter
implements
Converter {
02.
@Override
03.
public
Object fromBody(TypedInput body, Type type)
throws
ConversionException {
04.
ByteArrayOutputStream baos =
new
ByteArrayOutputStream();
05.
int
i = -
1
;
06.
String response =
""
;
07.
try
{
08.
while
((i = body.in().read()) != -
1
) {
09.
baos.write(i);
10.
}
11.
response = baos.toString();
12.
baos.close();
13.
}
catch
(IOException e) {
14.
e.printStackTrace();
15.
}
16.
return
response;
17.
}
18.
19.
@Override
20.
public
TypedOutput toBody(
final
Object object) {
21.
return
new
TypedOutput() {
22.
@Override
23.
public
String fileName() {
24.
return
null
;
25.
}
26.
27.
@Override
28.
public
String mimeType() {
29.
return
"String"
;
30.
}
31.
32.
@Override
33.
public
long
length() {
34.
return
object ==
null
?
0
: object.toString().length();
35.
}
36.
37.
@Override
38.
public
void
writeTo(OutputStream out)
throws
IOException {
39.
out.write(object.toString().getBytes());
40.
}
41.
};
42.
}
43.
}
44.
</code>
当得到了一个restAdapter 对象后,调用restAdapter的create方法得到User接口的实现类
01.
<code
class
=
" hljs java"
> Callback<String> callback =
new
Callback<String>() {
02.
@Override
03.
public
void
success(String s, Response response) {
04.
05.
}
06.
07.
@Override
08.
public
void
failure(RetrofitError error) {
09.
10.
}
11.
}
12.
User user = getAdapter().create(User.
class
);
13.
//指定请求参数和回调接口的实现类
14.
user.getUsers(
12
,callback);</code>
Retrofit的强大之处就在于此,它会给根据接口的方法注解来实现该接口
代码混淆
如果需要进行代码混淆,配置如下
1.
<code
class
=
" hljs haml"
>-dontwarn retrofit.**
2.
-keep
class
retrofit.** { *; }
3.
-keepattributes Signature
4.
-keepattributes Exceptions</code>
延伸阅读:
- 1、android 获取网络图片方法 常见错误以及解决办法
- 2、Android网络状态
- 3、Android 下载网络文件
- 4、Android Listview 分页 动态加载网络数据
- 5、Android网络应用开发从零开始做起
- 6、Android开发之APN网络切换
- 7、android 网络编程学习
- 8、Android作为客户端,PC作为服务端:实现网络通信
0 0
- AndroidStudio下使用Retrofit进行网络请求
- 使用Retrofit进行网络请求
- Retrofit进行网络请求
- Retrofit网络请求使用
- 使用Retrofit进行Http、Https网络请求(快速上手)
- 使用Retrofit进行Http、Https网络请求(快速上手)
- Android 网络请求:Retrofit 使用
- Android 网络请求:Retrofit 使用
- 利用Retrofit进行各种网络请求
- Retrofit+RxJava进行网络请求流程解析
- Android 网络请求库Retrofit简单使用
- 使用Stetho调试Retrofit的网络请求
- Android网络请求框架Retrofit使用详解
- 网络请求框架Retrofit的基本使用
- Android中retrofit网络请求框架使用
- Retrofit网络请求框架的基本使用
- [Android 知识点] 网络请求框架Retrofit使用
- retrofit网络请求的简单封装使用
- java获取当前日期是星期几
- 优先队列重载 3种写法
- ios,android提交文件及图片到 PHP服务端
- 实体类转换-映射EntityConverter
- init/initWithFrame/自定义init方法执行顺序
- AndroidStudio下使用Retrofit进行网络请求
- http://androidxref.com
- GitHub 上排名前 100 的 Objective-C 项目简介
- 项目用到的分支总汇
- JAVA加密解密要用到的JAR包
- linux添加开机自启动脚本示例详解
- Elasticsearch Client 初始化方式以及清除数据方式
- 一个APP开发者的愤慨:为啥会有打包党和上传手机号
- nginx启动、重启、关闭