rosu 的博客

Android 札记系列 (9):HTTP 请求方法、Retrofit 注解和其他

2018-08-14

HTTP 请求方法

URL 和 URI 的区别

URI 是某种协议的定位符,可以确定唯一的某个资源或实体。URL 是 URI 的其中一种实现。
参看

GET:获取资源

GET 方法是最常见的请求方法,它被用来请求已被 URL 识别的内容。也就是在 URL 中显示出现的资源文件。
比如 www.baidu.com/index.html,这个index.html 就是显示出现的文件。
服务端会根据请求的资源文件做适当处理并返回,比如请求的是文本文件,那么保持原样直接返回。

POST:传输实体主体

GET 方法也可以传输实体,但是一般不用 GET 方法进行实体传输请求,而是使用 POST 方法。POST 方法的含义就是客户端将一些信息传输给服务端,然后服务端根据这些信息返回结果。

PUT:传输文件

PUT 方法用来传输文件给服务端,如果传输成功,一般服务端会返回 204 状态码,但是没有消息内容。

HEAD:请求头部内容

HEAD 方法用于请求某个资源文件对应的头部信息。

DELETE:删除文件

请求删除 URL 所标识的资源。

以上是比较常用的几种请求方法。

Retrofit 中 URL 的使用场景

拼接 URL

1
2
3
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://www.baidu.com/")
.build();

我们的 baseURL 是这样的,但是很多时候需要在根据不同的请求接口来设置 URL,所以我们设置一个 baseURL 之后,就需要在请求接口中设置后续的路径。
比如:

1
2
3
4
5

public interface BaiduService {
@GET("this/is/example/url")
Call<ResponseBody> get();
}

这是拼接 URL 的情况。

@Path 参数

更多时候,我们需要根据当前的需求来动态更新我们的 url,比如根据用户的不同,我们要请求的 URL 也不一样。

1
2
3
4
5

public interface UserService {
@GET("/example/for/{user}/")
Call<ResponseBody> getUser(@Path("user") String user);
}

典型的场景之一,就是我们需要根据当前的用户名来获取发起请求。这里使用 @Path 参数,来告诉 Retrofit,其中的{user} 是预设的缺省值,是需要被传入的参数替换的。
所以我们发起创建请求的时候:

1
2
3
UserService userService = retrofit.create(UserService.class);
// 传参数
Call<ResponseBody> call = userService.getUser("ExampleUser");

@Query

如果是 URL 后加查询参数的,那么需要使用@Query

1
2
3
4
5
6
7

public interface UserService {
@GET("/example/for/query/")
Call<ResponseBody> getUser(@Query("id") String id);
}
// 最终 url
https://www.baidu.com/example/for/query/?id=123

参看

UTC 时间格式转换

最近接触到了时间字符串中带有 TZ 字符的情况,一查才知道是 UTC 统一时间。其实在转换的时候,只需要在 SimpleDateFormat("") 的传入参数中,设好格式即可。

比如时间字符串2018-08-23T10:46:00Z:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Main {
public static void main(String[] args){
String utcTime = "2018-08-23T10:46:00Z";

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
df.setTimeZone(TimeZone.getDefault());
Date date;

try {
date = df.parse(utcTime);
System.out.printf(date.toString());
}catch (ParseException pe){
pe.printStackTrace();
}

}
}

参看

Android Studio toString 快捷键

  • Windows

Ctrl + N --> toString

  • Mac

Command + N --> toString

使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章