Retrofit 支持网络请求方式:DELETE,GET,HEAD(注意HEAD方法的返回值类型必须是Void类型),PATCH,POST,PUT,OPTIONS;
所有支持的网络请求方式都是通过注解方式来实现的。
例如:
public interface GitHubService {
@GET("users/repos")
Call<List<Repo>> listRepos(@Query ("user") String user);
}
一下是Retrofit支持的所有注解的使用说明(除了网络请求方式注解)
一下测试网址("https://www.baidu.com/s?wd=1&ws=1")
1,@Query(在网址"?"后面的参数部分键值对)
interface test{
@POST("s")
Call<Entity> test(@Query ( "wd" ) int para1,@Query ( "ws" ) int para2);
}
2,@QueryMap(如果网址问号"?"后面的参数比较多的 情况下可以考虑用这个注解)
例如
interface test{
@POST("s")
Call<Entity> test2( @QueryMap Map<String,String> pMap);
}
3,@Url()(就是指定url的完整地址,注意使用@Url注解的时候不能和@Path注解同时使用,@Url注解不能放在@Query和@
@QueryMap注解之后。)
例如:
@POST ()
Call<Entity> test( @Url() String url,@Query ( "wd" ) int currentVersionNumber,
@Query ( "ws" ) int versionType);
调用的时候,这样调用
Retrofit sRetrofit=new Retrofit.Builder ().baseUrl ( "http://www.baidu.com" )
.addConverterFactory ( GsonConverterFactory.create () )
.build ();
test sTest=sRetrofit.create ( test.class );
sTest.test ( "https://www.baidu.com",1,1
).enqueue ( new Callback< Entity > ( ) {
@Override
public void onResponse ( Call < Entity > call, Response< Entity > response ) {
Log.i ( "------------Success---",response.body ().getData ().getUrl () );
}
@Override
public void onFailure ( Call < Entity > call, Throwable t ) {
Log.i ( "------Fail---",t.getMessage () );
}
} );
}
其中baseUrl不能为空,但可以为其他任何一个Url。
4,@Path(用于替代@POST("{a}/{b}")等网络请求方式中的{a},{b}的值)
例如
String Url="www.baidu.com/a/b?a=1;b=2";
interface test{
@POST("{a}/{b}")
Call<Entity> test( @Path ( "a" ) String a, @Path ( "b" )
String b, @Query ( "a" ) int pa,
@Query ( "b" ) int pb);
Call<Entity> test2( @QueryMap Map<String,String> pMap);
}
Retrofit sRetrofit=new Retrofit.Builder ().baseUrl (Url)
.addConverterFactory ( GsonConverterFactory.create () )
.build ();
test sTest=sRetrofit.create ( test.class );
sTest.test ("a","b",1,2
).enqueue ( new Callback< Entity > ( ) {
@Override
public void onResponse ( Call < Entity > call, Response< Entity > response ) {
Log.i ( "------------Success---",response.body ().getData ().getUrl () );
}
@Override
public void onFailure ( Call < Entity > call, Throwable t ) {
Log.i ( "------Fail---",t.getMessage () );
}
} );
5,@Header(添加单个网络请求响应头数据)
例如:
String Url="www.baidu.com/a/b?a=1;b=2";
interface test{
@POST("{a}/{b}")
Call<Entity> test(@Header("Accept-Ranges") header,@Header("Cache-Control") header2,@Path ( "a" ) String a, @Path ( "b" )
String b, @Query ( "a" ) int pa,
@Query ( "b" ) int pb);
Call<Entity> test2( @QueryMap Map<String,String> pMap);
}
Retrofit sRetrofit=new Retrofit.Builder ().baseUrl (Url)
.addConverterFactory ( GsonConverterFactory.create () )
.build ();
test sTest=sRetrofit.create ( test.class );
sTest.test ("bytes","public,max-age=31536000","a","b",1,2
).enqueue ( new Callback< Entity > ( ) {
@Override
public void onResponse ( Call < Entity > call, Response< Entity > response ) {
Log.i ( "------------Success---",response.body ().getData ().getUrl () );
}
@Override
public void onFailure ( Call < Entity > call, Throwable t ) {
Log.i ( "------Fail---",t.getMessage () );
}
} );
6,@HeaderMap(使用方式和@Header注解类似,它是在网络请求响应头数据比较多的情况下使用,用一个Map集合
承载所有的响应头数据)
7,@FormUrlEncoded(将Url按照"UTF-8"的方式进行编码)
8,@Field(用于指定网络请求参数时候进行"UTF-8"编码,必须和@FormUrlEncoded一起使用)
例如
String Url="www.baidu.com/a/b?a=1;b=2";
interface test{
@FormUrlEncoded()
@POST("{a}/{b}")
Call<Entity> test(@Header("Accept-Ranges") header,@Header("Cache-Control") header2,@Path ( "a" ) String a, @Path ( "b" )
String b, @Field(value="a",encoded=false ) int pa,
@Field(value= "b",encoded=false ) int pb);
Call<Entity> test2( @QueryMap Map<String,String> pMap);
}
Retrofit sRetrofit=new Retrofit.Builder ().baseUrl (Url)
.addConverterFactory ( GsonConverterFactory.create () )
.build ();
test sTest=sRetrofit.create ( test.class );
sTest.test ("bytes","public,max-age=31536000","a","b",1,2
).enqueue ( new Callback< Entity > ( ) {
@Override
public void onResponse ( Call < Entity > call, Response< Entity > response ) {
Log.i ( "------------Success---",response.body ().getData ().getUrl () );
}
@Override
public void onFailure ( Call < Entity > call, Throwable t ) {
Log.i ( "------Fail---",t.getMessage () );
}
} );
9,@FieldMap(和@Field注解方式类似)
10,@QueryName(类似与@Query,但它是将参数名称加在Url后面,不带有值)
12,@Multipart(必须和@Part()同时使用@Multipart()说明有文件下载,@Part()指定下载文件的路径)
13,@PartMap(和@Part()的功能类似)
14,@Body(就是将请求参数(请求体)通过指定的转换工厂转换成指定的格式,比如JavaBean转换为Json数据传输)
15,CallAdapter.Factory详解请看(http://blog.youkuaiyun.com/gengqiquan/article/details/52785773)
本文详细介绍了Retrofit中各种注解的使用方法,包括@Query、@QueryMap、@Url、@Path、@Header等,并提供了多个示例帮助理解。
436

被折叠的 条评论
为什么被折叠?



