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.
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.
}
});