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

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -