retrofit2 POST 同时有@HeaderMap和@Body
时间: 2024-12-26 12:29:58 浏览: 12
在Retrofit 2 中,当你需要同时发送一个HTTP POST请求,其中既包含Header Map又包含Body数据,你可以这样做:
首先,在定义API接口时,你需要将这两个部分分别放在不同的注解下。通常,`@HeaderMap`用于设置请求头,而`@Body`用于指定请求体。
```java
public interface YourApiService {
@POST("your-endpoint")
Call<YourResponse> sendData(@HeaderMap Map<String, String> headers, @Body YourRequestBody body);
}
```
在这里,`YourApiService`是你自定义的服务接口,`your-endpoint`是你要调用的服务器端URL,`@HeaderMap`用于定义一组头信息,比如认证信息、Content-Type等,`@Body`则是一个用于封装请求体对象的参数,如JSON对象或者POJO(Plain Old Java Object)。
当你发起这个请求时,你需要创建一个`Call`实例,并传递对应的头信息和请求体对象:
```java
Map<String, String> headerMap = new HashMap<>();
headerMap.put("Authorization", "Bearer your_token");
YourRequestBody requestBody = new YourRequestBody();
// 初始化请求体的数据...
YourApiService service = yourRetrofit.create(YourApiService.class);
Call<YourResponse> call = service.sendData(headerMap, requestBody);
call.enqueue(new Callback<YourResponse>() {
//...
});
```
阅读全文