如何通过改造来制作CURL请求?

时间:2015-01-23 15:50:42

标签: android curl request retrofit

我试图登录。

请求看起来像$ curl -u"用户名:PASSWORD" https://urlhere.com

如何使用改造使其工作?

我尝试了一个授权标题,例如request.addHeader(" Authentication",username +":" + password);

请帮忙吗?

2 个答案:

答案 0 :(得分:6)

你的问题不够明确。 我想这是基本的认证,你可以使用这样的东西

@FormUrlEncoded
@POST("/login") void login(
        @Header("Authorization") String authorization,
        Callback<?> callback
);



// later when you call it

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

final String auth = "Basic " + getBase64String("user:password");
apiClient.login(auth, callback);

我希望有所帮助。 :)

答案 1 :(得分:3)

  1. 如果您有需要仅对单独的休息请求使用授权,您可以通过@Header进行。可以使用@Header注释动态更新请求标头。

    @FormUrlEncoded
    @GET("/user")
    void getUser(@Header("Authorization") 
    String authorization, Callback<User> callback);
    

    哪里

    String authorization = "Basic " + getBase64String("user:password");
    

    例如,它将字符串:Basic b2QGdyb3Vwb24ucnU6aWxvdmVteW1hbWE=

    public static String getBase64String(String value)throws UnsupportedEncodingException {     返回Base64.encodeToString(value.getBytes(&#34; UTF-8&#34;),Base64.NO_WRAP); }

  2. 如果您有需要对所有其他请求使用授权,则可以通过Retrofit Interceptor添加@Header:

    new RestAdapter.Builder().
        setClient(...).
        setEndpoint(...).
        setErrorHandler(...).
        setRequestInterceptor(new RequestInterceptor() {
        @Override
        public void intercept(RequestFacade request) {
               request.addHeader("Content-Type", "application/json");
               request.addHeader("Authorization", authorization);
               }
        }).
        build();