amjad
amjad

Reputation: 2916

What is the best way to send a request to URL from Android application multiple time?

I have an application that needs to send current user location, when the location changes, to remote URL. I am using following code to call url with some params. But following code only works once, when I can't for the second time nothing happens. I on see one request on the server log and then not requests are received.

public String sendRequest(String url){
  InputStream content = null;
      try {
        HttpResponse response = httpclient.execute(new HttpGet(url));
        response.setHeader("Cache-Control", "no-cache");
        content = response.getEntity().getContent();
        content.close();
      } catch (Exception e) {
        try {
            content.close();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }


      }
        return content;
}

NOTE: I am using emulator and sending location manually.

Here is the error log, when I try to call the method for second time

03-30 16:48:15.205: E/ActivityThread(645): Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40ceef60 that was originally bound here
03-30 16:48:15.205: E/ActivityThread(645): android.app.ServiceConnectionLeaked: Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40ceef60 that was originally bound here
03-30 16:48:15.205: E/ActivityThread(645):  at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:969)
03-30 16:48:15.205: E/ActivityThread(645):  at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:863)
03-30 16:48:15.205: E/ActivityThread(645):  at android.app.ContextImpl.bindService(ContextImpl.java:1418)
03-30 16:48:15.205: E/ActivityThread(645):  at android.app.ContextImpl.bindService(ContextImpl.java:1407)
03-30 16:48:15.205: E/ActivityThread(645):  at android.content.ContextWrapper.bindService(ContextWrapper.java:473)
03-30 16:48:15.205: E/ActivityThread(645):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:157)
03-30 16:48:15.205: E/ActivityThread(645):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:145)
03-30 16:48:15.205: E/ActivityThread(645):  at com.android.emailcommon.service.AccountServiceProxy.getDeviceId(AccountServiceProxy.java:116)
03-30 16:48:15.205: E/ActivityThread(645):  at com.android.exchange.ExchangeService.getDeviceId(ExchangeService.java:1249)
03-30 16:48:15.205: E/ActivityThread(645):  at com.android.exchange.ExchangeService$7.run(ExchangeService.java:1856)
03-30 16:48:15.205: E/ActivityThread(645):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:551)
03-30 16:48:15.205: E/ActivityThread(645):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:549)
03-30 16:48:15.205: E/ActivityThread(645):  at android.os.AsyncTask$2.call(AsyncTask.java:287)
03-30 16:48:15.205: E/ActivityThread(645):  at java.util.concurrent.FutureTask.run(FutureTask.java:234)
03-30 16:48:15.205: E/ActivityThread(645):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
03-30 16:48:15.205: E/ActivityThread(645):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
03-30 16:48:15.205: E/ActivityThread(645):  at java.lang.Thread.run(Thread.java:856)
03-30 16:48:15.225: E/StrictMode(645): null
03-30 16:48:15.225: E/StrictMode(645): android.app.ServiceConnectionLeaked: Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40ceef60 that was originally bound here
03-30 16:48:15.225: E/StrictMode(645):  at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:969)
03-30 16:48:15.225: E/StrictMode(645):  at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:863)
03-30 16:48:15.225: E/StrictMode(645):  at android.app.ContextImpl.bindService(ContextImpl.java:1418)
03-30 16:48:15.225: E/StrictMode(645):  at android.app.ContextImpl.bindService(ContextImpl.java:1407)
03-30 16:48:15.225: E/StrictMode(645):  at android.content.ContextWrapper.bindService(ContextWrapper.java:473)
03-30 16:48:15.225: E/StrictMode(645):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:157)
03-30 16:48:15.225: E/StrictMode(645):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:145)
03-30 16:48:15.225: E/StrictMode(645):  at com.android.emailcommon.service.AccountServiceProxy.getDeviceId(AccountServiceProxy.java:116)
03-30 16:48:15.225: E/StrictMode(645):  at com.android.exchange.ExchangeService.getDeviceId(ExchangeService.java:1249)
03-30 16:48:15.225: E/StrictMode(645):  at com.android.exchange.ExchangeService$7.run(ExchangeService.java:1856)
03-30 16:48:15.225: E/StrictMode(645):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:551)
03-30 16:48:15.225: E/StrictMode(645):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:549)
03-30 16:48:15.225: E/StrictMode(645):  at android.os.AsyncTask$2.call(AsyncTask.java:287)
03-30 16:48:15.225: E/StrictMode(645):  at java.util.concurrent.FutureTask.run(FutureTask.java:234)
03-30 16:48:15.225: E/StrictMode(645):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
03-30 16:48:15.225: E/StrictMode(645):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
03-30 16:48:15.225: E/StrictMode(645):  at java.lang.Thread.run(Thread.java:856)
03-30 16:48:15.225: W/ActivityManager(275): Unbind failed: could not find connection for android.os.BinderProxy@4100e3e8
03-30 16:48:15.246: E/ActivityThread(645): Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40d2cc28 that was originally bound here
03-30 16:48:15.246: E/ActivityThread(645): android.app.ServiceConnectionLeaked: Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40d2cc28 that was originally bound here
03-30 16:48:15.246: E/ActivityThread(645):  at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:969)
03-30 16:48:15.246: E/ActivityThread(645):  at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:863)
03-30 16:48:15.246: E/ActivityThread(645):  at android.app.ContextImpl.bindService(ContextImpl.java:1418)
03-30 16:48:15.246: E/ActivityThread(645):  at android.app.ContextImpl.bindService(ContextImpl.java:1407)
03-30 16:48:15.246: E/ActivityThread(645):  at android.content.ContextWrapper.bindService(ContextWrapper.java:473)
03-30 16:48:15.246: E/ActivityThread(645):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:157)
03-30 16:48:15.246: E/ActivityThread(645):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:145)
03-30 16:48:15.246: E/ActivityThread(645):  at com.android.emailcommon.service.ServiceProxy.test(ServiceProxy.java:191)
03-30 16:48:15.246: E/ActivityThread(645):  at com.android.exchange.ExchangeService$7.run(ExchangeService.java:1850)
03-30 16:48:15.246: E/ActivityThread(645):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:551)
03-30 16:48:15.246: E/ActivityThread(645):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:549)
03-30 16:48:15.246: E/ActivityThread(645):  at android.os.AsyncTask$2.call(AsyncTask.java:287)
03-30 16:48:15.246: E/ActivityThread(645):  at java.util.concurrent.FutureTask.run(FutureTask.java:234)
03-30 16:48:15.246: E/ActivityThread(645):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
03-30 16:48:15.246: E/ActivityThread(645):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
03-30 16:48:15.246: E/ActivityThread(645):  at java.lang.Thread.run(Thread.java:856)
03-30 16:48:15.265: E/StrictMode(645): null
03-30 16:48:15.265: E/StrictMode(645): android.app.ServiceConnectionLeaked: Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40d2cc28 that was originally bound here
03-30 16:48:15.265: E/StrictMode(645):  at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:969)
03-30 16:48:15.265: E/StrictMode(645):  at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:863)
03-30 16:48:15.265: E/StrictMode(645):  at android.app.ContextImpl.bindService(ContextImpl.java:1418)
03-30 16:48:15.265: E/StrictMode(645):  at android.app.ContextImpl.bindService(ContextImpl.java:1407)
03-30 16:48:15.265: E/StrictMode(645):  at android.content.ContextWrapper.bindService(ContextWrapper.java:473)
03-30 16:48:15.265: E/StrictMode(645):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:157)
03-30 16:48:15.265: E/StrictMode(645):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:145)
03-30 16:48:15.265: E/StrictMode(645):  at com.android.emailcommon.service.ServiceProxy.test(ServiceProxy.java:191)
03-30 16:48:15.265: E/StrictMode(645):  at com.android.exchange.ExchangeService$7.run(ExchangeService.java:1850)
03-30 16:48:15.265: E/StrictMode(645):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:551)

I see the problem, I have to add

HttpGet getter =  new HttpGet(url);
getter.setHeader("Cache-Control", "no-cache");

Upvotes: 0

Views: 553

Answers (1)

Bill Mote
Bill Mote

Reputation: 12823

You're probably experiencing a caching issue. Android doesn't see any difference in your request and you're probably asking for it very close together.

add a HTTP header:

Cache-Control: no-cache

Upvotes: 1

Related Questions