在Volley中,我们想要GET网址得到Cookie,需要覆盖一个方法 protected Response<String> parseNetworkResponse(NetworkResponse response)。
具体如何操作呢?
private void VolleyGET() {
String url = "你的网址";
RequestQueue queue = Volley.newRequestQueue(LoginActivity.this);
final StringRequest request = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(LoginActivity.this, "世界上最遥远的距离就是没网。检查设置" + error, Toast.LENGTH_LONG).show();
}
}){
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
Map<String,String> mHeaders = response.headers;
String rawCookie = mHeaders.get("Set-Cookie");
String[] rawArray = rawCookie.split(";");
cookie = rawArray[0];
editor.putString("Cookie", cookie);
editor.apply();
try {
String data = new String(response.data, "UTF-8");
return Response.success(data, HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
}
}
};
request.setTag("GET");
queue.add(request);
}
get("Set-Cookie") 这个方法是从头部的map集合中,去得cookie,然后将其保存于
SharedPreferences,方便后续的使用。