使用Retrofit进行CURL -u请求

时间:2015-11-07 07:58:59

标签: android curl retrofit

我在Android中使用Retrofit(不是新的)进行OAuth授权。 我已经过了第一步,我得到了一个代码,现在规范中的下一步是这样做:

curl -u : http://example.com/admin/oauth/token -d 'grant_type=authorization_code&code='

我从未做过curl请求,我不知道该怎么做,尤其是使用Retrofit和它的界面。

我看了看这个

How to make a CURL request with retrofit?

但是这家伙没有什么东西

1 个答案:

答案 0 :(得分:2)

curl的-d参数添加了POST参数。在这种情况下,grant_typecode。我们可以使用@Field注释对每个改进进行编码。

public interface AuthApi {
    @FormUrlEncoded
    @POST("/admin/oauth/token")
    void getImage(@Header("Authorization") String authorization,
                        @Field(("grant_type"))String grantType,
                        @Field("code") String code,
                        Callback<Object> callback);
}

如果授权字段使用@Header解决方案,则会在您的关联问题上提供。

用法就像 -

RestAdapter authAdapter = new RestAdapter.Builder().setEndpoint("http://example.com/").build();
AuthApi authApi = authAdapter.create(AuthApi.class);

try {
    final String auth = "Basic " + getBase64String(":");
    authApi.getImage(auth, "authorization_code", "", new Callback<Object>() {
        @Override
        public void success(Object o, Response response) {
            // handle success
        }

        @Override
        public void failure(RetrofitError error) {
            // handle failure
        }
    });
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}

其中getBase64String是来自链接答案的辅助方法。在下面复制完整性 -

public static String getBase64String(String value) throws UnsupportedEncodingException {
    return Base64.encodeToString(value.getBytes("UTF-8"), Base64.NO_WRAP);
}