Java:retrofit2发送http网络请求

网友投稿 919 2022-05-30

文档:https://square.github.io/retrofit/

Github: https://github.com/square/retrofit

使用Python Flask提供简易的api测试服务

# -*- coding: utf-8 -*- import random from flask import Flask, Request, jsonify app = Flask(__name__) @app.route("/get") def get(): """通过get方式传递查询参数""" name = request.args.get("name") age = random.randint(10, 30) data = { "name": name, "age": age, } return jsonify(data) @app.route("/post", methods=['POST']) def post(): """通过post方式提交json数据""" name = request.json.get("name") age = random.randint(10, 30) data = { "name": name, "age": age, } return jsonify(data) if __name__ == '__main__': app.run(debug=True)

1

2

3

4

5

6

7

8

9

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

依赖

com.squareup.retrofit2 retrofit 2.9.0 com.squareup.retrofit2 converter-gson 2.0.0-beta3 junit junit 4.13 test

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

返回的实体对象

package com.demo.http; public class Person { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

请求接口

package com.demo.http; import okhttp3.RequestBody; import retrofit2.Call; import retrofit2.http.Body; import retrofit2.http.GET; import retrofit2.http.POST; import retrofit2.http.Query; public interface ApiService { @GET("/get") Call getPerson(@Query("name") String name); @POST("/post") Call postPerson(@Body RequestBody body); }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

测试代码

package com.demo.http; import com.google.gson.Gson; import okhttp3.MediaType; import okhttp3.RequestBody; import org.junit.BeforeClass; import org.junit.Test; import retrofit2.Call; import retrofit2.GsonConverterFactory; import retrofit2.Response; import retrofit2.Retrofit; import java.io.IOException; import java.util.HashMap; import java.util.Map; public class RequestTest { // 请求地址 private static final String BASE_URL = "http://127.0.0.1:5000/"; // json private static final MediaType JSON = MediaType.get("application/json; charset=utf-8"); private static Retrofit retrofit; @BeforeClass public static void setUp() { retrofit = new Retrofit.Builder() .baseUrl(BASE_URL) // 类型转换 Could not locate ResponseBody converter for class .addConverterFactory(GsonConverterFactory.create()) .build(); } /** * GET 测试 * * @throws IOException */ @Test public void testGet() throws IOException { ApiService request = retrofit.create(ApiService.class); Call call = request.getPerson("Tom"); // Person person = call.execute(); // 同步请求 Response response = call.execute(); Person person = response.body(); System.out.println(person); // Person{name='Tom', age=10} } /** * POST json 测试 * * @throws IOException */ @Test public void testPost() throws IOException { ApiService request = retrofit.create(ApiService.class); // body参数 Map map = new HashMap<>(); map.put("name", "Jack"); Gson gson = new Gson(); String body = gson.toJson(map); System.out.println(body); RequestBody requestBody = RequestBody.create(body, JSON); Call call = request.postPerson(requestBody); // 同步执行 Response response = call.execute(); Person person = response.body(); System.out.println(person); // Person{name='Tom', age=24} } }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

Java:retrofit2发送http网络请求

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

69

70

71

72

73

74

75

76

77

78

79

80

81

82

参考

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

HTTP Java 网络

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:海量小文件处理方式——facebook开源的Haystack(一)
下一篇:Spring Boot项目打包并部署到云服务器
相关文章