java - Android volley. Get data from the header of the HTTP response -
i making http requests rest server. response json body. need parameter response header, keep user token in it. have looked @ lot of posts on stack overflow similar questions, don't seem have helped me. want make json request, , body , headers form response. how can it? here code:
please don't mark question duplicate, have not found example can retrieve both: response header , response body. existing questions, users headers
jsonobjectrequest req = new jsonobjectrequest(appconfig.url_login, new jsonobject(params), new response.listener<jsonobject>() { @override public void onresponse(jsonobject response) { system.out.println(response.tostring()); hidedialog(); try { jsonobject jobj = response; string uid = jobj.getstring("_id"); string name = jobj.getstring("fullname"); string email = jobj.getstring("email"); // inserting row in users table db.adduser(name, email, uid); toast.maketext(getapplicationcontext(), "user registered. try login now!", toast.length_long).show(); intent intent = new intent( loginactivity.this, mainactivity.class); startactivity(intent); finish(); } catch (jsonexception e) { e.printstacktrace(); } } }, new response.errorlistener() { @override public void onerrorresponse(volleyerror error) { networkresponse networkresponse = error.networkresponse; string toasterror = "response code: " + networkresponse.statuscode; toast.maketext(getapplicationcontext(), toasterror, toast.length_long).show(); hidedialog(); } });
you can't using jsonobjectrequest
. should extend request
class , implement parsenetworkresponse()
method provides access low-level networkresponse
object. downside of course have re-implement json parsing well, not big deal.
something like:
public class headerawarejsonrequest extends request<pair<jsonobject,map>> { protected response.listener<pair<jsonobject,map>> listener; public headerawarejsonrequest( int method, string url, response.listener<pair<jsonobject,map>> listener, response.errorlistener errorlistener ) { super( method, url, errorlistener ); this.listener = listener; } @override protected response<pair<jsonobject,map>> parsenetworkresponse( networkresponse response ) { try{ string jsonstring = new string( response.data, httpheaderparser.parsecharset( response.headers ) ); // pair contains json body , headers pair pair = new pair( new jsonobject( jsonstring ), response.headers ); return response.success( pair, httpheaderparser.parsecacheheaders( response ) ); }catch( exception e ){ return response.error( new parseerror( e ) ); } } }
then in calling code:
headerawarejsonrequest req = new headerawarejsonrequest( request.method.get, appconfig.url_login, new response.listener<pair<jsonobject,map>>() { @override public void onresponse(pair<jsonobject,map> response) { jsonobject jobj = response.first; map headers = response.second; string someheader = headers.get( "aaaaa" ); ... } }, new response.errorlistener() {...} );
Comments
Post a Comment