The retrofit.Response https://github.com/square/retrofit/blob/master/retrofit/src/main/java/retrofit2/Response.java类有静态工厂方法来创建实例:
public static <T> Response<T> success(T body) {
/* ... */
}
public static <T> Response<T> success(T body, com.squareup.okhttp.Response rawResponse) {
/* ... */
}
public static <T> Response<T> error(int code, ResponseBody body) {
/* ... */
}
public static <T> Response<T> error(ResponseBody body, com.squareup.okhttp.Response rawResponse) {
/* ... */
}
例如:
Account account = ...;
retrofit.Response<Account> aResponse = retrofit.Response.success(account);
Or:
retrofit.Response<Account> aResponse = retrofit.Response.error(
403,
ResponseBody.create(
MediaType.parse("application/json"),
"{\"key\":[\"somestuff\"]}"
)
);
注意:在 Kotlin 的最新 Retrofit 版本(2.7.1)中,建议使用如下扩展方法:
Response.error(
400,
"{\"key\":[\"somestuff\"]}"
.toResponseBody("application/json".toMediaTypeOrNull())
)
这属于有效的 Java 第 1 条:考虑静态工厂方法而不是构造函数.