我正在尝试使用带有键值(&
分隔)有效负载和简单用户身份验证的改造来创建请求,因为它可以在以下curl
命令中完成:
curl -X POST -d "grant_type=refresh_token&refresh_token=<refresh_token>" -u"<client_id>:<client_secret>" http://localhost:8000/o/token/
如何在提供上述数据的改造中创建请求?如果使用的话,我需要接口方法和RequestBody
的创建。
更新
我使用了以下代码
接口方法定义:
@POST("/o/token/")
Observable<ServerToken> refreshAccessToken(@Header("Authorization") String auth, @Body RequestBody tokens);
调用实现:
RequestBody body = new FormEncodingBuilder()
.add("grant_type", "refresh_token")
.add("refresh_token", serverToken.refresh_token)
.build();
String auth = Credentials.basic("<client_id>", "<client_secret>");
mTokenApi.refreshAccessToken(auth, body)
但我在请求中得到Content-Type: application/json
并且请求空白。
我该如何解决这个问题?
答案 0 :(得分:1)
正确的做法是:
接口方法定义:
RestClient.get 'https://username:password@stash.address.net/rest/api/1.0/projects/FOOBAR/repos', { accept: :json, params: { limit: 1000 }}
调用实现:
@FormUrlEncoded
@POST("/o/token/")
Observable<ServerToken> refreshAccessToken(@Header("Authorization") String auth,
@Field("grant_type") String grantType,
@Field("refresh_token") String refreshToken);