ログイン後にユーザーのid, email and JWT token
を返すノードバックエンドがあります。 IDと電子メールはJSON応答本体に設定され、トークンはHTTPヘッダーとして設定されます。Android Volley読み込みと保存HTTPヘッダー
私がやってみたいのは、ヘッダからそのトークンを読んで、後でトークンを削除するので、ユーザがログアウトするまでそれを保存しておくだけです。
getHeaders()
を上書きしてヘッダーを設定する方法と、parseNetworkResponse()
を上書きしてヘッダーを読み取る方法について、いくつかの記事があります。 parseNetworkResponse()
の私の問題は、私が避けたいJSON本体の情報を書く必要があるということです。 getHeaders()
の私の他の問題は、サーバから生成されたJWT token
を使用しなければならないため、私のヘッダをHashMapに「ハードコード」できないということです。
これは私の最初のAndroidプロジェクトであり、全体的に私は単純なユースケースだと信じていますが、この時点で少し混乱しています。
関連するコード:
// AuthenticationRequest.java
public class AuthenticationRequest extends JsonObjectRequest{
public AuthenticationRequest(int method, String url, JSONObject payload,
Response.Listener<JSONObject> listener, Response.ErrorListener errorListener) {
super(method, url, payload, listener, errorListener);
}
@Override
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
try {
String jsonString = new String(response.data, HttpHeaderParser.parseCharset(response.headers, PROTOCOL_CHARSET));
JSONObject jsonResponse = new JSONObject(jsonString);
// I could fetch here with response.headers
return Response.success(jsonResponse, HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException | JSONException e) {
return Response.error(new ParseError(e));
}
}
}
// BasicActivity.java
private void sendRequestToServer(String url, int method, JSONObject payload, final Class toGo) {
final AuthenticationRequest request =
new AuthenticationRequest(method, url, payload, response -> {
try {
startActivity(new Intent(this, toGo).putExtra("jsonData", response.toString()));
} catch (Exception e) {
e.printStackTrace();
}
}, Throwable::printStackTrace);
VolleySingleton.getInstance(this).addToRequestQueue(request);
}
あなたが使用しています既にヘッダにアクセスしているクラス:http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/andr oid/4.2.2_r1/com/android/volley/toolbox/HttpHeaderParser.java/ – Submersed
@Submersed最初に助けてくれてありがとう:私はそれを認識しています。私が達成しようとするのは、具体的なヘッダー 'x-auth'(私によって生成されたサーバー側)を永続的に格納することです。 – thedude