为了账号安全,请及时绑定邮箱和手机立即绑定

Android Retrofit使用教程(二)

标签:
Android

上一篇文章讲述了Retrofit的简单使用,这次我们学习一下Retrofit的各种HTTP请求.

Retrofit基础

在Retrofit中使用注解的方式来区分请求类型.比如@GET("")表示一个GET请求,括号中的内容为请求的地址.

格式

含义

@GET

表示这是一个GET请求

@POST

表示这个一个POST请求

@PUT

表示这是一个PUT请求

@DELETE

表示这是一个DELETE请求

@HEAD

表示这是一个HEAD请求

@OPTIONS

表示这是一个OPTION请求

@PATCH

表示这是一个PAT请求

基本的HTTP请求

Retrofit可实现基本HTTP请求,包括GET,POST,PUT,DELETE等.

1.GET请求

[代码]java代码:

?

1

2

@GET("/record")

Call<phoneresult>   getResult();</phoneresult>

 

2.POST请求

[代码]java代码:

?

1

2

@POST("/record")

Call<phoneresult>   getResult();</phoneresult>

 

3.PUT请求.

[代码]java代码:

?

1

2

@PUT("/record")

Call<phoneresult>   getResult();</phoneresult>

 

4.DELETE请求

[代码]java代码:

?

1

2

@DELETE("/record")

Call<phoneresult>   getResult();</phoneresult>

 

服务器接口类型

服务器接口有很多中,本人经验有限,目前接触较多为以下几种:

直接请求型

即直接对某一地址或组合某一地址发起请求

如:对/result/result/{id}发起GET请求,其中{id}中的id在实际使用时填写实际值即可.

带参查询型

对某一地址进行带参查询请求

如:https://www.baidu.com/s?wd=123为对接口https://www.baidu.com/s进行参数为wd=123GET查询请求.

带Header型

 即请求时要求带上Header

Retrofit中如何写?

直接请求型

1.如果是直接请求某一地址,写法如下:

[代码]java代码:

?

1

2

@GET("/record")

Call<phoneresult>   getResult();</phoneresult>

 

2.如果是组合后直接请求,如/result/{id}写法如下:

[代码]java代码:

?

1

2

@GET("/result/{id}")

Call<phoneresult> getResult(@Path("id")   String id);</phoneresult>

 

带参查询型

如12306的查询接口https://kyfw.12306.cn/otn/lcxxcx/query?purpose_codes=ADULT&queryDate=2016-03-18&from_station=BJP&to_station=CDW,写法如下:

[代码]java代码:

?

1

2

3

@GET("/otn/lcxxcx/query")

Call<result> query(@Query("purpose_codes")   String codes, @Query("queryDate") String date,

    @Query("from_station")   String from, @Query("to_station") String to)</result>

 

带Header型

比如要更新某个账户信息,其接口地址为/info,需要带的Header有设备信息device,系统版本version,还要带请求参数要更新账户的id,代码如下:

[代码]java代码:

?

1

2

3

@POST("/info")

Call<object> updateInfo(@Header("device")   String device, @Header("version") int version,

                        @Field("id")   String id); <br></object>

:本想给每一种请求添加一个请求实例,但是确实不太好找.

实例

找了很久发现多说提供了一些POST请求接口,下面就以多说的接口为例,看一下如何使用Retrofit写请求.

基础URL

多说的接口基础地址为:http://api.duoshuo.com,则构建Retrofit实例代码如下:

[代码]java代码:

?

1

2

3

4

Retrofit retrofit = new Retrofit.Builder()

        .addConverterFactory(GsonConverterFactory.create())

        .baseUrl("http://api.duoshuo.com")

        .build();

 

获取文章评论、转发数

接口地址为:/threads/counts

HTTP请求方式:GET

请求示例为:http://api.duoshuo.com/threads/counts.json?short_name=official&threads=4ff1cbc43ae636b72a00001d

后面的.json为返回数据的格式,此处我们使用json格式.

请求代码如下:

[代码]java代码:

?

1

2

3

@GET("/threads/counts.json")

Call<object> getCommit(@Query("short_name")   String shortName,

                       @Query("threads")   String threads); <br></object>

匿名发表新评论

接口地址为:/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方式实现

[代码]java代码:

?

1

2

3

4

5

6

7

8

9

@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);</commitresult>

 

2.Field Map实现方式

[代码]java代码:

?

1

2

3

@FormUrlEncoded

@POST("/posts/create.json")

Call<commitresult> createCommit(@FieldMap Map<string, string="">   map);</string,></commitresult>

 

获取Map方式如下:

[代码]java代码:

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

public class CommitParam   {

  

    private String short_name;

    private String author_email;

    private String author_name;

    private String thread_id;

    private String author_url;

    private String message;

  

    public String getShort_name() {

        return short_name;

    }

  

    public void setShort_name(String short_name) {

        this.short_name   = short_name;

    }

  

    public String getAuthor_email() {

        return author_email;

    }

  

    public void setAuthor_email(String author_email) {

        this.author_email   = author_email;

    }

  

    public String getAuthor_name() {

        return author_name;

    }

  

    public void setAuthor_name(String author_name) {

        this.author_name   = author_name;

    }

  

    public String getThread_id() {

        return thread_id;

    }

  

    public void setThread_id(String thread_id) {

        this.thread_id   = thread_id;

    }

  

    public String getAuthor_url() {

        return author_url;

    }

  

    public void setAuthor_url(String author_url) {

        this.author_url   = author_url;

    }

  

    public String getMessage() {

        return message;

    }

  

    public void setMessage(String message) {

        this.message   = message;

    }

  

    public Map<string, string="">   createCommitParams(){

        Map<string,   string=""> params = new HashMap<>();

        params.put("short_name",   short_name);

        params.put("author_email",   author_email);

        params.put("author_name",   author_name);

        params.put("thread_id",   thread_id);

        params.put("author_url",   author_url);

        params.put("message",   message);

        return params;

    }

}</string,></string,>

原文链接:http://www.apkbus.com/blog-705730-61355.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消