如何参照curl接口文档编写正确的access_token请求代码?
修正后的代码实现
@FormUrlEncoded @Headers( "Accept: application/json" ) @POST("/token") suspend fun requestToken( @Field("client_id") clientId: String, @Field("client_secret") clientSecret: String, @Field("grant_type") grantType: String = "client_credentials", @Field("scope") scope: String = "accounts" ): AccessTokenResponse
上述代码将grant_type和scope设为了默认参数,调用时无需额外传值,若后续有动态修改需求也可以灵活调整。如果你的Retrofit BaseUrl已经配置为https://mandarine.sai.com/,路径不需要额外调整,调用时传入对应CLIENT_ID和CLIENT_SECRET即可获得正确的token响应。
核心修改点说明
- 新增
@FormUrlEncoded注解:所有application/x-www-form-urlencoded类型的POST请求必须添加该注解,否则表单参数无法正确序列化到请求体 - 替换
@Query为@Field注解:@Query是将参数拼接在请求URL后作为查询参数,而curl中-d对应的是请求体中的表单参数,必须用@Field传递 - 修正参数名错误:将原代码中写错的
client_ id(中间含空格)修正为文档要求的client_id - 补充两个必填固定参数:按文档要求添加
grant_type(固定值为client_credentials)和scope(固定值为accounts)两个表单参数
内容的提问来源于stack exchange,提问作者Morozov
相关产品推荐
相关产品推荐

