GET请求

多个参数在URL问号之后,且个数不确定

http://api.stay4it.com/News?newsId=1&type=类型1… 
http://api.stay4it.com/News?newsId={资讯id}&type={类型}…

@GET("News")
Call<NewsBean> getItem(@QueryMap Map<String, String> map);
  • 1
  • 2

或者:

  @GET("News")
Call<NewsBean> getItem(
@Query("newsId") String newsId,
@QueryMap Map<String, String> map);
  • 1
  • 2
  • 3
  • 4

POST请求

  • 需要补全URL,post的数据只有一条reason

http://102.10.10.132/api/Comments/1 
http://102.10.10.132/api/Comments/{newsId}

@FormUrlEncoded
@POST("Comments/{newsId}")
Call<Comment> reportComment(
@Path("newsId") String commentId,
@Field("reason") String reason);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 需要补全URL,问号后加入access_token,post的数据只有一条reason

http://102.10.10.132/api/Comments/1?access_token=1234123 
http://102.10.10.132/api/Comments/{newsId}?access_token={access_token}

@FormUrlEncoded
@POST("Comments/{newsId}")
Call<Comment> reportComment(
@Path("newsId") String commentId,
@Query("access_token") String access_token,
@Field("reason") String reason);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 需要补全URL,问号后加入access_token,post一个body(对象)

http://102.10.10.132/api/Comments/1?access_token=1234123 
http://102.10.10.132/api/Comments/{newsId}?access_token={access_token}

@POST("Comments/{newsId}")
Call<Comment> reportComment(
@Path("newsId") String commentId,
@Query("access_token") String access_token,
@Body CommentBean bean);
  • 1
  • 2
  • 3
  • 4
  • 5

DELETE

需要补全URL

http://102.10.10.132/api/Comments/1 
http://102.10.10.132/api/Comments/{newsId}

{access_token}

@DELETE("Comments/{commentId}")
Call<ResponseBody> deleteNewsCommentFromAccount(
@Path("accountId") String accountId);
  • 1
  • 2
  • 3

需要补全URL,问号后加入access_token

http://102.10.10.132/api/Comments/1?access_token=1234123 
http://102.10.10.132/api/Comments/{newsId}?access_token={access_token}

@DELETE("Comments/{commentId}")
Call<ResponseBody> deleteNewsCommentFromAccount(
@Path("accountId") String accountId,
@Query("access_token") String access_token);
  • 1
  • 2
  • 3
  • 4

PUT(这个请求很少用到,例子就写一个)

http://102.10.10.132/api/Accounts/1 
http://102.10.10.132/api/Accounts/{accountId}

 @PUT("Accounts/{accountId}")
Call<ExtrasBean> updateExtras(
@Path("accountId") String accountId,
@Query("access_token") String access_token,
@Body ExtrasBean bean);
  • 1
  • 2
  • 3
  • 4
  • 5

总结

@Path:所有在网址中的参数(URL的问号前面),如: 
http://102.10.10.132/api/Accounts/{accountId} 
@Query:URL问号后面的参数,如: 
http://102.10.10.132/api/Comments?access_token={access_token} 
@QueryMap:相当于多个@Query 
@Field:用于POST请求,提交单个数据 
@Body:相当于多个@Field,以对象的形式提交

TIps

  • Tip1 
    使用@Field时记得添加@FormUrlEncoded
  • Tip2 
    若需要重新定义接口地址,可以使用@Url,将地址以参数的形式传入即可。如
 @GET
Call<List<Activity>> getActivityList(
@Url String url,
@QueryMap Map<String, String> map);
  • 1
  • 2
  • 3
  • 4
Call<List<Activity>> call = service.getActivityList(
"http://115.159.198.162:3001/api/ActivitySubjects", map);
  • 1
  • 2

参考简书:http://www.jianshu.com/p/7687365aa946

还有@FieldMap

如匿名发表新评论:

接口地址为: /posts/create

HTTP请求方式: POST

请求示例为:

Request URL: http://api.duoshuo.com/posts/create.json 
Request Method: POST 
Post Data: short_name=official&author_email=jp.chenyang%40gmail.com&author_name=Perchouli&thread_id=1152923703638301959&author_url=http%3A%2F%2Fduoshuo.com&message=匿名发表新评论

1.Field方式实现

@FormUrlEncoded
@POST("/posts/create.json")
Call<CommitResult> createCommit(@Field("secret") String secret,
@Field("short_name") String shortName,
@Field("author_email") String authorEmail,
@Field("author_name") String authorName,
@Field("thread_key") String threadKey,
@Field("author_url") String author_url,
@Field("message") String message);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2.Field Map实现方式

@FormUrlEncoded
@POST("/posts/create.json")
Call<CommitResult> createCommit(@FieldMap Map<String, String> map);
  • 1
  • 2
  • 3

Android Retrofit网络请求Service,@Path、@Query、@QueryMap、@FieldMap (转)的更多相关文章

  1. Android Retrofit网络请求Service,@Path、@Query、@QueryMap、@Map...

    http://blog.csdn.net/jdsjlzx/article/details/51607867

  2. 【Android】Retrofit网络请求Service,@Path、@Query、@QueryMap...

    对Retrofit已经使用了一点时间了,是时候归纳一下各种网络请求的service了. 下面分为GET.POST.DELETE还有PUT的请求,说明@Path.@Query.@QueryMap.@Bo ...

  3. Android okHttp网络请求之Retrofit+Okhttp+RxJava组合

    前言: 通过上面的学习,我们不难发现单纯使用okHttp来作为网络库还是多多少少有那么一点点不太方便,而且还需自己来管理接口,对于接口的使用的是哪种请求方式也不能一目了然,出于这个目的接下来学习一下R ...

  4. 基于Retrofit+RxJava的Android分层网络请求框架

    目前已经有不少Android客户端在使用Retrofit+RxJava实现网络请求了,相比于xUtils,Volley等网络访问框架,其具有网络访问效率高(基于OkHttp).内存占用少.代码量小以及 ...

  5. Android okHttp网络请求之Json解析

    前言: 前面两篇文章介绍了基于okHttp的post.get请求,以及文件的上传下载,今天主要介绍一下如何和Json解析一起使用?如何才能提高开发效率? okHttp相关文章地址: Android o ...

  6. Android okHttp网络请求之Get/Post请求

    前言: 之前项目中一直使用的Xutils开源框架,从xutils 2.1.5版本使用到最近的xutils 3.0,使用起来也是蛮方便的,只不过最近想着完善一下app中使用的开源框架,由于Xutils里 ...

  7. Android okHttp网络请求之文件上传下载

    前言: 前面介绍了基于okHttp的get.post基本使用(http://www.cnblogs.com/whoislcj/p/5526431.html),今天来实现一下基于okHttp的文件上传. ...

  8. Android okHttp网络请求之缓存控制Cache-Control

    前言: 前面的学习基本上已经可以完成开发需求了,但是在项目中有时会遇到对请求做个缓存,当没网络的时候优先加载本地缓存,基于这个需求我们来学习一直okHttp的Cache-Control. okHttp ...

  9. Retrofit网络请求库应用02——json解析

    PS:上一篇写了Retrofit网络请求库的简单使用,仅仅是获取百度的源码,来证明连接成功,这篇讲解如何解析JSON数据,该框架不再是我们之前自己写的那样用JsonArray等来解析,这些东西,我们都 ...

随机推荐

  1. java报表工具FineReport使用中遇到的常见报错及解决办法(三)

    这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己. 出现问题先搜一下文档上有没有,再看看度娘有没有,再看看论坛有没有.有报错要看日志.下面简单罗列下常见的问题,大多 ...

  2. 理解 OpenStack Swift (3):监控和一些影响性能的因素 [Monitoring and Performance]

    本系列文章着重学习和研究OpenStack Swift,包括环境搭建.原理.架构.监控和性能等. (1)OpenStack + 三节点Swift 集群+ HAProxy + UCARP 安装和配置 ( ...

  3. cvBox2D和RotatedRect中返回的角度angle详解

    本文为作者原创,未经允许不得转载: 原文由作者发表在博客园: http://www.cnblogs.com/panxiaochun/p/5478555.html 关于cvBox2D和RotatedRe ...

  4. hdu2896 病毒侵袭 ac自动机

    地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=2896 题目: 病毒侵袭 Time Limit: 2000/1000 MS (Java/Othe ...

  5. XBOX ONE游戏开发常见问题

    XBOX ONE游戏开发常见问题 终于弄懂这个在Unity的sdk在Account Picker切换账号的机制了,一个手柄注册一个账号,在游戏里面的时候,只有另外一个手柄选择自己的账号,系统的Acti ...

  6. 使用C#向后台ACCESS数据库添加数据

    Microsoft Office Access是由微软发布的关系数据库管理系统.它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点,是 Microsoft O ...

  7. Android的4种文件类型Java,class,dex,apk

    Java文件-----应用程序源文件 Android本身相当一部分都是用java编写而成(基本上架构图里头蓝色的部份都是用Java开发的),android的应用必须使用java来开发 Class文件- ...

  8. 开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发

    [原][开源框架]Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位... 时间 2015-01-05 10:08:18 我是程序猿,我为自己代言 原文  http: ...

  9. sql server 修改表结构语法大全

    1.增加字段 ) 2.删除字段 alter table table_name drop column column_name 3.修改字段类型 alter table table_name alter ...

  10. 改变input默认选中颜色

    修改 outline-color 属性即可实现