android - Square Retrofit repeats network calls -


i using square's retrofit library handle networking application. have noticed library makes repeated http calls no apparent reason , not know why.

i have verified call interface method executed once android activity (ie.userapi.getuserbyfacebookidasync()).

has experimented too? perhaps has okhttp library setup?

any appreciated.

retrofit logging

08-18 21:25:56.895  30331-30372/com.package.name d/retrofit﹕ ---> http http://server-instance:8080/server-app//user/facebook?facebookid=00000000 08-18 21:25:56.895  30331-30372/com.package.name d/retrofit﹕ facebookid: 00000000 08-18 21:25:56.895  30331-30372/com.package.name d/retrofit﹕ facebooktoken: xxxxx 08-18 21:25:56.895  30331-30372/com.package.name d/retrofit﹕ ---> end http (no body)  08-18 21:25:57.434  30331-30372/com.package.name d/retrofit﹕ ---> http http://server-instance:8080/server-app//user/facebook?facebookid=00000000 08-18 21:25:57.434  30331-30372/com.package.name d/retrofit﹕ facebookid: 00000000 08-18 21:25:57.434  30331-30372/com.package.name d/retrofit﹕ facebooktoken: xxxxx 08-18 21:25:57.434  30331-30372/com.package.name d/retrofit﹕ ---> end http (no body)  08-18 21:25:57.441  30331-30359/com.package.name d/retrofit﹕ ---> http http://server-instance:8080/server-app/user/facebook?facebookid=00000000 08-18 21:25:57.441  30331-30359/com.package.name d/retrofit﹕ facebookid: 00000000 08-18 21:25:57.441  30331-30359/com.package.name d/retrofit﹕ facebooktoken: xxxxx 08-18 21:25:57.441  30331-30359/com.package.name d/retrofit﹕ ---> end http (no body)  08-19 03:05:59.448  10069-10345/com.package.name d/retrofit﹕ <--- http 200 http://server-instance:8080/server-app/user/facebook?facebookid=00000000 (770ms) 08-19 03:05:59.448  10069-10345/com.package.name d/retrofit﹕ : http/1.1 200 ok 08-19 03:05:59.448  10069-10345/com.package.name d/retrofit﹕ content-type: application/json 08-19 03:05:59.448  10069-10345/com.package.name d/retrofit﹕ date: tue, 19 aug 2014 02:05:59 gmt 08-19 03:05:59.448  10069-10345/com.package.name d/retrofit﹕ okhttp-received-millis: 1408413959446 08-19 03:05:59.448  10069-10345/com.package.name d/retrofit﹕ okhttp-response-source: conditional_cache 200 08-19 03:05:59.448  10069-10345/com.package.name d/retrofit﹕ okhttp-selected-protocol: http/1.1 08-19 03:05:59.448  10069-10345/com.package.name d/retrofit﹕ okhttp-sent-millis: 1408413959001 08-19 03:05:59.448  10069-10345/com.package.name d/retrofit﹕ server: apache-coyote/1.1 08-19 03:05:59.448  10069-10345/com.package.name d/retrofit﹕ transfer-encoding: chunked 08-19 03:05:59.456  10069-10345/com.package.name d/retrofit﹕ {"id":4,"facebookid":"00000000","gender":"male","city":"barcelona","country":"spain","firstname":"john","premium":false} 08-19 03:05:59.456  10069-10345/com.package.name d/retrofit﹕ <--- end http (390-byte body) 

the responses 2 calls received too, not included in logging sample.

network call (activity code included further below)

userapi.getuserbyfacebookidasync(user.getid(), new callback<user>() {     @override     public void success(user user, response response) {}     @override     public void failure(retrofiterror error) {} 

retrofit api interface method

@get("/user/facebook") void getuserbyfacebookidasync(@query("facebookid") string facebookid, callback<user> cb); 

retrofit api handler

public class apihandler { static requestinterceptor requestinterceptor = new requestinterceptor() {     @override     public void intercept(requestfacade request) {         request.addheader("facebookid", constants.facebook_id);         request.addheader("facebooktoken", constants.facebook_token);     } }; private static restadapter restadapter;  private static restadapter getrestadapter() {     if (restadapter == null) {         restadapter = new restadapter.builder().                 setrequestinterceptor(requestinterceptor).                 setloglevel(restadapter.loglevel.full).                 setclient(constants.ok_client).                 setendpoint(baseapi.getinstance().base_url).build();     }     return restadapter; }  public static userapi getuserapi() {     userapi userapi = null;     try {         if (restadapter == null) {             restadapter = getrestadapter();         }         userapi = restadapter.create(userapi.class);     } catch (exception e) {         e.printstacktrace();     }     return userapi; }} 

okhttp setup (on app startup)

int cachesize = 10 * 1024 * 1024; // 10 mib file cachedirectory = new file(getapplicationcontext().getcachedir().getabsolutepath(), "httpcache"); cache cache = null; try {     cache = new cache(cachedirectory, cachesize); } catch (ioexception e) {     e.printstacktrace(); } okhttpclient okhttpclient = new okhttpclient(); okhttpclient.setcache(cache); constants.ok_client = new okclient(okhttpclient); 

android activity

public class currentuserprofileactivity extends activity {      @override     protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);      setcontentview(r.layout.current_user_profile_activity_layout);      userapi = apihandler.getuserapi();     clubapi = apihandler.getclubapi();     visitapi = apihandler.getvisitapi();      picasso = pablopicasso.withdebug(this);      userprofilepicture = (imageview) findviewbyid(r.id.userprofilepicture);      makemerequest(session.getactivesession());      userprofilepicture.setontouchlistener(new view.ontouchlistener() {          @override         public boolean ontouch(view v, motionevent event) {             intent intent = new intent(getbasecontext(), picturevieweractivity.class);             intent.putextra("facebookid", muser.getfacebookid());             startactivity(intent);             return false;         }     });     }      private void makemerequest(final session session) {        request request = request.newmerequest(session,             new request.graphusercallback() {                 @override                 public void oncompleted(graphuser user, com.facebook.response response) {                     // if response successful                     if (session == session.getactivesession()) {                         if (user != null) {                             userapi.getuserbyfacebookidasync(user.getid(), new callback<user>() {                                 @override                                 public void success(user user, response response) {                                     muser = user;                                }                                 @override                                 public void failure(retrofiterror error) {                                     log.d(tag, "userapi call user object server failed!");                                 }                             });                         }                     }                     if (response.geterror() != null) {                         intent introactivityintent = new intent(currentuserprofileactivity.this, introactivity.class);                         introactivityintent.setflags(intent.flag_activity_new_task | intent.flag_activity_clear_task);                         startactivity(introactivityintent);                         finish();                     }                 }             }        );        request.executeasync();     }} 

there post on medium about, explains

https://medium.com/inloop/okhttp-is-quietly-retrying-requests-is-your-api-ready-19489ef35ace#.mj80t78ir

you can disable request retrying globally whole okhttpclient instance. done using okhttpclient.builder , setting retryonconnectionfailure false.


Comments

Popular posts from this blog

java - How to specify maven bin in eclipse maven plugin? -

single sign on - Logging into Plone site with credentials passed through HTTP -

php - Why does AJAX not process login form? -