tutorial example java android oauth httpurlconnection

tutorial - httpurlconnection java example



Cómo configurar el encabezado de autorización(token de OAuth) en una solicitud OKHTTPClient de Android (2)

Soy capaz de establecer el encabezado de autenticación en las solicitudes de HTTPURLConnection normales de esta manera:

URL url = new URL(source); HttpURLConnection connection = this.client.open(url); connection.setRequestMethod("GET"); connection.setRequestProperty("Authorization", "Bearer " + token);

Esto es estándar para HttpURLConnection. En el fragmento de código anterior, this.client es una instancia de OkHTTPClient de Square ( here ).

Me pregunto si hay una OkHTTP específica de OkHTTP de configurar el encabezado de autenticación? Veo la clase OkAuthenticator pero no OkAuthenticator claro cómo usarla exactamente, parece que solo maneja los desafíos de autenticación.

De antemano, gracias por cualquier consejo.


Si usa la versión actual (2.0.0), puede agregar un encabezado a una solicitud:

Request request = new Request.Builder() .url("https://api.yourapi...") .header("ApiKey", "xxxxxxxx") .build();

En lugar de usar:

connection.setRequestMethod("GET"); connection.setRequestProperty("ApiKey", "xxxxxxxx");

Sin embargo, para las versiones anteriores (1.x), creo que la implementación que utiliza es la única forma de lograrlo. Como sus listas de cambios mencionan:

Versión 2.0.0-RC1 2014-05-23

Nuevos tipos de solicitud y respuesta, cada uno con su propio constructor. También hay una clase RequestBody para escribir el cuerpo de la solicitud en la red y un ResponseBody para leer el cuerpo de la respuesta desde la red. La clase de encabezados independientes ofrece acceso completo a los encabezados HTTP.


https://github.com/square/okhttp/blob/master/samples/guide/src/main/java/com/squareup/okhttp/recipes/Authenticate.java

client.setAuthenticator(new Authenticator() { @Override public Request authenticate(Proxy proxy, Response response) { System.out.println("Authenticating for response: " + response); System.out.println("Challenges: " + response.challenges()); String credential = Credentials.basic("jesse", "password1"); return response.request().newBuilder() .header("Authorization", credential) .build(); } @Override public Request authenticateProxy(Proxy proxy, Response response) { return null; // Null indicates no attempt to authenticate. } });