Skip to content Skip to sidebar Skip to footer

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"