2015-01-23 2 views
1

Я пытаюсь сделать логин.Как сделать запрос CURL с модификацией?

Запрос выглядит следующим образом $ загнутого уголка -u «Имя пользователя: Пароль» https://urlhere.com

Как я могу сделать эту работу с помощью переоснащения?

Я пробовал заголовок авторизации, что-то вроде request.addHeader («Аутентификация», имя пользователя + «:» + пароль);

Любая помощь пожалуйста?

+1

http://en.wikipedia.org/wiki/Basic_access_authentication - попробуйте использовать заголовок 'Authorization' с зашифрованными учетными данными. – CommonsWare

+0

* Как сделать запрос CURL с модификацией? * Вводит в заблуждение ... – Selvin

ответ

5

Ваш вопрос недостаточно ясен. Я думаю, что это основная аутентификация, вы можете использовать что-то вроде этого

@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); 

я надеюсь, что помогает. :)

2
  1. Если у вас есть потребности использовать авторизацию только для отдельного запроса отдыха вы можете сделать это с помощью @Header. Заголовок запроса может обновляться динамически с помощью аннотации @Header.

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

    Где

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

    Например, это будет строка: Basic b2QGdyb3Vwb24ucnU6aWxvdmVteW1hbWE=

    общественности статической строки getBase64String (значение String) бросает UnsupportedEncodingException { возвращение Base64.encodeToString (value.getBytes ("UTF -8 "), Base64.NO_WRAP); }

  2. Если у вас есть потребности использовать авторизацию для всех остальных запросов вы можете добавить @Header через из Retrofit Interceptor:

    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(); 
    
Смежные вопросы