簡體   English   中英

Android將HTTP連接到MVC Asp.net控制器

[英]Android connecting HTTP to MVC Asp.net Controller

嗨,我正試圖從我的MVC asp.net獲取一個json對象。

我遇到錯誤

            StringBuilder url = new StringBuilder(URL);

    HttpGet get = new HttpGet (url.toString());

    HttpResponse r = client.execute(get);
    int status = r.getStatusLine().getStatusCode();

    if(status == 200)
    {
        HttpEntity e = r.getEntity();
        String data = EntityUtils.toString(e);

        JSONArray timeline = new JSONArray(data);
        JSONObject last = timeline.getJSONObject(0);

        return last;
    }
    else 
    {
        Toast.makeText(Authenticate.this, "error", Toast.LENGTH_LONG);
        return null;
    }

錯誤:

Java.IOException。

             public class Read extends AsyncTask <String,Integer,String>
      {

        @Override
        protected String doInBackground(String... params) {
            // TODO Auto-generated method stub
            try{
                json = Verify();
                return json.getString(params[0]);
            }
            catch (ClientProtocolException e)
            {               
            }
            catch (IOException e)
            {               
            }
            catch (JSONException e)
            {

            }
            return null;
        }

我目前正在通過localhost連接。

問題發生在以下行:HttpResponse r = client.execute(get);

它沒有執行,並且VM上的應用程序崩潰了。

我修改了代碼,使其看起來像這樣,但仍然出現相同的錯誤:

   public JSONObject Verify(HttpResponse r) throws ClientProtocolException,                               IOException, JSONException
{
    //StringBuilder url = new StringBuilder(URL);
    //Adds the pin and IMEI.
    //url.append(b);
    //HttpGet get = new HttpGet (url.toString());

    //HttpResponse r = client.execute(get);
    int status = r.getStatusLine().getStatusCode();

    if(status == 200)
    {
        HttpEntity e = r.getEntity();
        String data = EntityUtils.toString(e);

        JSONArray timeline = new JSONArray(data);
        JSONObject last = timeline.getJSONObject(0);

        return last;
    }
    else 
    {
        Toast.makeText(Authenticate.this, "error", Toast.LENGTH_LONG);
        return null;
    }

}

    public class Read extends AsyncTask <String,Integer,String>
    {

        @Override
        protected String doInBackground(String... params) {
            // TODO Auto-generated method stub
            try{
                HttpResponse r = client.execute(get);
                json = Verify(r);
                return json.getString(params[0]);
            }
            catch (ClientProtocolException e)
            {               
            }
            catch (IOException e)
            {               
            }
            catch (JSONException e)
            {

            }
            return null;
        }

日志貓給了我這個錯誤:07-10 20:53:23.578:E / ActivityThread(661):服務com.android.exchange.ExchangeService泄漏了ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40d17eb0最初綁定在這里07-10 20:53:23.578:E / ActivityThread(661):android.app.ServiceConnectionLeaked:服務com.android.exchange.ExchangeService泄漏了ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40d17eb0最初綁定在這里07-10 20:53:23.578:E / ActivityThread(661):在android.app.LoadedApk $ ServiceDispatcher。(LoadedApk.java:969)07-10 20:53:23.578:E / ActivityThread( 661):位於android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:863)07-10 20:53:23.578:E / ActivityThread(661):位於android.app.ContextImpl.bindService(ContextImpl.java:1418)07 -10 20:53:23.578:E / ActivityThread(661):在android.app.ContextImpl.bindService(ContextImpl.java:1407)07-10 20:53:23.578:E / ActivityThread(661):在android.content .Co ntextWrapper.bindService(ContextWrapper.java:473)07-10 20:53:23.578:E / ActivityThread(661):在com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:157)07-10 20: 53:23.578:E / ActivityThread(661):在com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:145)07-10 20:53:23.578:E / ActivityThread(661):在com.android .emailcommon.service.ServiceProxy.test(ServiceProxy.java:191)07-10 20:53:23.578:E / ActivityThread(661):at com.android.exchange.ExchangeService $ 7.run(ExchangeService.java:1850)07 -10 20:53:23.578:E / ActivityThread(661):at com.android.emailcommon.utility.Utility $ 2.doInBackground(Utility.java:551)07-10 20:53:23.578:E / ActivityThread(661) :位於com.android.emailcommon.utility.Utility $ 2.doInBackground(Utility.java:549)07-10 20:53:23.578:E / ActivityThread(661):位於android.os.AsyncTask $ 2.call(AsyncTask.java :287)07-10 20:53:23.578:E / ActivityThread(661):位於java.util.concurrent.FutureTask.run(FutureTask.java:234)07-10 20:53:23.578:E / ActivityTh 讀取(661):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)07-10 20:53:23.578:E / ActivityThread(661):在java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:573)07-10 20:53:23.578:E / ActivityThread(661):在java.lang.Thread.run(Thread.java:856)07-10 20:53:23.588:E / StrictMode (661):null 07-10 20:53:23.588:E / StrictMode(661):android.app.ServiceConnection泄漏:服務com.android.exchange.ExchangeService泄漏了ServiceConnection com.android.emailcommon.service.ServiceProxy $ ProxyConnection @最初綁定在此處的40d17eb0 07-10 20:53:23.588:E / StrictMode(661):at android.app.LoadedApk $ ServiceDispatcher。(LoadedApk.java:969)07-10 20:53:23.588:E / StrictMode (661):位於android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:863)07-10 20:53:23.588:E / StrictMode(661):位於android.app.ContextImpl.bindService(ContextImpl.java:1418) 07-10 20:53:23.588:E / StrictMode(661):位於android.app.ContextImpl.bindService(ContextImpl.ja va:1407)07-10 20:53:23.588:E / StrictMode(661):位於android.content.ContextWrapper.bindService(ContextWrapper.java:473)07-10 20:53:23.588:E / StrictMode(661) :位於com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:157)07-10 20:53:23.588:E / StrictMode(661):位於com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy .java:145)07-10 20:53:23.588:E / StrictMode(661):位於com.android.emailcommon.service.ServiceProxy.test(ServiceProxy.java:191)07-10 20:53:23.588:E / StrictMode(661):com.android.exchange.ExchangeService $ 7.run(ExchangeService.java:1850)07-10 20:53:23.588:E / StrictMode(661):com.android.emailcommon.utility.Utility $ 2.doInBackground(Utility.java:551)07-10 20:53:23.588:E / StrictMode(661):at com.android.emailcommon.utility.Utility $ 2.doInBackground(Utility.java:549)07-10 :53:23.588:E / StrictMode(661):在android.os.AsyncTask $ 2.call(AsyncTask.java:287)07-10 20:53:23.588:E / StrictMode(661):在java.util.concurrent .FutureTask.run(FutureTask.java: 234)07-10 20:53:23.588:E / StrictMode(661):位於java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)07-10 20:53:23.588:E / StrictMode(661) :在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:573)07-10 20:53:23.588:E / StrictMode(661):在java.lang.Thread.run(Thread.java:856 )07-10 20:53:23.588:W / ActivityManager(291):解除綁定失敗:找不到android.os.BinderProxy@4100de60的連接

沒有更多信息很難說,但是您可能正在UI線程上運行它,這是不允許的。 在這種情況下,您將需要使用AsynTask。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM