2011-05-10 100 views
0

我正在嘗試使用AsyncTask連接到Web服務。當我啓動應用程序時,它意外關閉。我究竟做錯了什麼?這裏是我的代碼:AsyncTask問題:我哪裏出錯了?

public class Main extends Activity { 
    private static final String CONSUMER_KEY = "dsfjfsdksfdjl322342"; 
    private static final String CONSUMER_SECRET = "fwefer234242424"; 
    private TextView mText; 
    ProgressDialog progress = null; 
    TextView mTextView = null; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     mTextView = (TextView)findViewById(R.id.textView); 
     //new ConnectThinkNearTask().execute(); 
     new ConnectToThinkSomeAPITask().execute("http://api-someapi.api.com/1.0/offers/40.7144,-74.0060.json"); 
    } 

    private class ConnectToSomeAPITask extends AsyncTask<String, Void, String> { 
     @Override 
     protected String doInBackground(String...urls) { 
      String response = ""; 
      for(String url: urls) { 
       OAuthConsumer consumer = new DefaultOAuthConsumer(CONSUMER_KEY, 
         CONSUMER_SECRET); 
       consumer.setTokenWithSecret("", ""); 

       try { 
        URL url1 = new URL(url); 
        HttpURLConnection request = (HttpURLConnection) url1.openConnection(); 


        // sign the request 
        consumer.sign(request); 

        // send the request 
        request.connect(); 

        if(request.getResponseCode()==200) { 
         response = "Sorry, failed to connect to x"; 
         //     mText.setText("Sorry, failed to connect to x"); 
         //    } else if(request.getResponseCode()==401) { 
         response = "Congrats, you're connected to x!"; 
         //mText.setText("Congrats, you're connected to x!"); 
        } else 
         response = "Whatever you're asking for, it ain't a valid HTTP request..."; 
        //     mText.setText("Whatever you're asking for, it ain't a valid HTTP request..."); 
       } catch (Exception e) { 
        e.printStackTrace(); 

       } 
      } return response; 

     } 

     @Override 
     protected void onPostExecute(String result) { 
      mTextView.setText(result); 
     } 
    }  

} 

而這裏的日誌:

05-09 21:34:00.219: ERROR/AndroidRuntime(29878): FATAL EXCEPTION: AsyncTask #1 
05-09 21:34:00.219: ERROR/AndroidRuntime(29878): java.lang.RuntimeException: An error occured while executing doInBackground() 
05-09 21:34:00.219: ERROR/AndroidRuntime(29878):  at android.os.AsyncTask$3.done(AsyncTask.java:200) 
05-09 21:34:00.219: ERROR/AndroidRuntime(29878):  at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
05-09 21:34:00.219: ERROR/AndroidRuntime(29878):  at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
05-09 21:34:00.219: ERROR/AndroidRuntime(29878):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
05-09 21:34:00.219: ERROR/AndroidRuntime(29878):  at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
05-09 21:34:00.219: ERROR/AndroidRuntime(29878):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 
05-09 21:34:00.219: ERROR/AndroidRuntime(29878):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 
05-09 21:34:00.219: ERROR/AndroidRuntime(29878):  at java.lang.Thread.run(Thread.java:1096) 
05-09 21:34:00.219: ERROR/AndroidRuntime(29878): Caused by: java.lang.NoClassDefFoundError: oauth.signpost.basic.DefaultOAuthConsumer 
05-09 21:34:00.219: ERROR/AndroidRuntime(29878):  at org.androidstack.thinknear.Main$ConnectToThinkNearTask.doInBackground(Main.java:45) 
05-09 21:34:00.219: ERROR/AndroidRuntime(29878):  at org.androidstack.thinknear.Main$ConnectToThinkNearTask.doInBackground(Main.java:1) 
05-09 21:34:00.219: ERROR/AndroidRuntime(29878):  at android.os.AsyncTask$2.call(AsyncTask.java:185) 
05-09 21:34:00.219: ERROR/AndroidRuntime(29878):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
05-09 21:34:00.219: ERROR/AndroidRuntime(29878):  ... 4 more 
+0

logcat輸出會有幫助 – debracey 2011-05-10 01:31:53

+0

NoClassDefFoundError表明您的類路徑設置不正確。你在哪裏把路標罐放在你的android項目中? – 2011-05-10 01:41:24

回答

0

好了,好了logcat的是有幫助的。這發生在我身上,當我通過選擇用戶庫來配置構建路徑來將庫添加到構建路徑時。出於某種原因,我需要在我的項目中始終創建一個名爲libs的文件夾,然後添加jar並單擊添加以構建路徑。它正在工作!