Retrofit2学习之四:POST请求
简介
Retrofit2 POST请求的请求参数支持Body、FormUrlEncoded、Multipart形式。
- Body:Converter转换器支持的格式(如JSON)
- FormUrlEncoded:Form表单形式
- Multipart:支持文件提交
官方文档:http://square.github.io/retrofit/
POST请求
创建业务请求接口
public interface Api {
/**
* Body参数
* @param user
* @return
*/
@POST("user/new")
Call<ResponseResult> saveUser(@Body User user);
/**
* 表单参数
* @param userId
* @param userName
* @return
*/
@FormUrlEncoded
@POST("user/edit")
Call<ResponseResult> editUser(@Field("id") int userId, @Field("username") String userName);
}
创建一个Retrofit的实例,然后利用Retrofit实例创建接口对象和调用接口方法
public void postRequest(View view) {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(SERVER_ADDRESS)
.addConverterFactory(GsonConverterFactory.create())
.build();
api = retrofit.create(Api.class);
User user = new User();
user.setId(8);
user.setUsername("AppBlog.CN");
//api.saveUser(user).enqueue(new Callback<ResponseResult>() {
api.editUser(8, "AppBlog.CN").enqueue(new Callback<ResponseResult>() {
@Override
public void onResponse(Call<ResponseResult> call, Response<ResponseResult> response) {
//在UI主线程运行
if (response.isSuccessful()) {
Log.i(TAG, "返回成功");
ResponseResult result = response.body();
if (result != null) {
Toast.makeText(MainActivity.this, result.getMessage(), Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onFailure(Call<ResponseResult> call, Throwable t) {
Log.i(TAG, "请求失败: " + t.getLocalizedMessage());
}
});
}
依次调用 saveUser
和 editUser
,以 Body 和 Field 参数的形式发送 POST 请求,服务端接收的格式分别为JSON(通过GsonConverterFactory转换Body)和表单参数。
"POST /user/new HTTP/1.1" 200 -
{u'username': u'AppBlog.CN', u'id': 8}
"POST /user/edit HTTP/1.1" 200 -
id = 8
username = AppBlog.CN
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/25/retrofit2-learning-4-post-request/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
THE END
0
二维码
打赏
海报
Retrofit2学习之四:POST请求
简介
Retrofit2 POST请求的请求参数支持Body、FormUrlEncoded、Multipart形式。
Body:Converter转换器支持的格式(如JSON)
FormUrlEncoded:Form表单形式
M……
文章目录
关闭
共有 0 条评论