标题和正文身份验证示例

@Header@Body 注释可以放入方法签名中,Retrofit 将根据你的模型自动创建它们。

public interface MyService {
     @POST("authentication/user")
     Call<AuthenticationResponse> authenticateUser(@Body AuthenticationRequest request, @Header("Authorization") String basicToken);
}

AuthenticaionRequest 是我们的模型,POJO,包含服务器所需的信息。对于此示例,我们的服务器需要客户端密钥和密钥。

public class AuthenticationRequest {
     String clientKey;
     String clientSecret;
}

请注意,在 @Header("Authorization") 中,我们指定我们正在填充 Authorization 标头。其他标题将自动填充,因为 Retrofit 可以根据我们发送和期望的对象类型推断出它们是什么。

我们在某处创建了 Retrofit 服务。我们确保使用 HTTPS。

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("https:// some example site")
            .client(client)
            .build();
MyService myService = retrofit.create(MyService.class)

然后我们可以使用我们的服务。

AuthenticationRequest request = new AuthenticationRequest();
request.setClientKey(getClientKey());
request.setClientSecret(getClientSecret());
String basicToken = "Basic " + token;
myService.authenticateUser(request, basicToken);