Android Volley Read And Store Http Header
I have a node backend, which returns the id, email and JWT token of an user after login. Id and email are set in the JSON response body and the token is set as a HTTP header. What
Solution 1:
So after playing around a bit I solved my issue. I created a TokenHandler
class which is really basic and just cares about setting/getting and later deleting a token.
TokenHandler.java
public final classTokenHandler {
privateTokenHandler() {}
privatestaticString token = "";
publicstaticvoidsetToken(String newToken) {
if (newToken != null)
token = newToken;
}
publicstaticStringgetToken() {
return token;
}
}
And you set it up on your sub-classed Request like this:
AuthRequest.java
publicclassAuthRequestextendsJsonObjectRequest{
// constructor@OverrideprotectedResponse<JSONObject> parseNetworkResponse(NetworkResponse response) {
try {
String jsonString = newString(response.data, HttpHeaderParser.parseCharset(response.headers, PROTOCOL_CHARSET));
JSONObject jsonResponse = newJSONObject(jsonString);
// set token after receiving from login responseTokenHandler.setToken(response.headers.get("x-auth"));
returnResponse.success(jsonResponse, HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException | JSONException e) {
returnResponse.error(newParseError(e));
}
}
@OverridepublicMap<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = newHashMap<>();
headers.put("x-auth", TokenHandler.getToken());
return headers;
}
}
Post a Comment for "Android Volley Read And Store Http Header"