致命的异常AsyncTask#1 doInBackground()

问题描述:

我是Android的新手,我正在开发一个应用程序,从QR码获取一些信息,然后连接一个php页面。然而,应用程序在读取QR代码后会崩溃,并且logCat在运行时会给出致命异常AsyncTask#1。致命的异常AsyncTask#1 doInBackground()

这里是doInBackground()代码:

class CreateNewProduct extends AsyncTask<String, String, String> 
    { 
     protected String doInBackground(String... args) 
     { 
      String tc= new String(); 
      tc= "3123"; 

      String no = new String(); 
      no = "3"; 

      /*String tcKimlik = "3123"; 
      String hatNo = "3";*/ 

      List<NameValuePair> params = new ArrayList<NameValuePair>(); 
      params.add(new BasicNameValuePair("tc", tc)); 
      params.add(new BasicNameValuePair("no", no)); 

      JSONObject json = jsonParser.makeHttpRequest(url_create_product, "POST", params); 

      try 
      { 
       int success = json.getInt(TAG_SUCCESS); 

       if (success == 1) 
       { 

        //qrCodeText.setText("DONE!"); 
       } 
       else 
       { 
        //qrCodeText.setText("Nope..."); 
       } 
      } 
      catch (JSONException e) 
      { 
       e.printStackTrace(); 
      } 

      return null; 
     } 

    } // End of CreateNewProduct 

CreateNewProduct是另一个类读取QR码和我这样称呼它new CreateNewProduct().execute(); QR码被读取之后。

这里是logcat的:

UPDATE:

我加入http://并提出setTexT()的评论后,加入到logcat的JSON错误:

05-16 01:00:08.900: E/JSON Parser(11835): Error parsing data org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject 

05-16 01:00:08.900: W/dalvikvm(11835): threadid=14: thread exiting with uncaught exception (group=0x410572a0) 
05-16 01:00:08.910: E/AndroidRuntime(11835): FATAL EXCEPTION: AsyncTask #1 
05-16 01:00:08.910: E/AndroidRuntime(11835): java.lang.RuntimeException: An error occured while executing doInBackground() 
05-16 01:00:08.910: E/AndroidRuntime(11835): at android.os.AsyncTask$3.done(AsyncTask.java:299) 
05-16 01:00:08.910: E/AndroidRuntime(11835): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
05-16 01:00:08.910: E/AndroidRuntime(11835): at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
05-16 01:00:08.910: E/AndroidRuntime(11835): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
05-16 01:00:08.910: E/AndroidRuntime(11835): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
05-16 01:00:08.910: E/AndroidRuntime(11835): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
05-16 01:00:08.910: E/AndroidRuntime(11835): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
05-16 01:00:08.910: E/AndroidRuntime(11835): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
05-16 01:00:08.910: E/AndroidRuntime(11835): at java.lang.Thread.run(Thread.java:856) 
05-16 01:00:08.910: E/AndroidRuntime(11835): Caused by: java.lang.NullPointerException 
05-16 01:00:08.910: E/AndroidRuntime(11835): at com.example.yoritreader.MainActivity$CreateNewProduct.doInBackground(MainActivity.java:442) 
05-16 01:00:08.910: E/AndroidRuntime(11835): at com.example.yoritreader.MainActivity$CreateNewProduct.doInBackground(MainActivity.java:1) 
05-16 01:00:08.910: E/AndroidRuntime(11835): at android.os.AsyncTask$2.call(AsyncTask.java:287) 
05-16 01:00:08.910: E/AndroidRuntime(11835): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
05-16 01:00:08.910: E/AndroidRuntime(11835): ... 5 more 

谢谢您的帮助!

错误已解决从php文件中删除<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Target host must not be null, or set in parameters. scheme=null, host=null, path=www.halilcosgun.com/qrcode.php 

您可能忘了将协议放在您网站的网址中。

尝试http://www.halilcosgun.com/qrcode.php

https://stackoverflow.com/a/8768930/1296658

+0

当我添加“http://”并将“setText”作为注释之后,它又向LogCat添加了2行: – ciyo

+0

'解析数据时出错org.json.JSONException:值java.lang.String类型的 FilipPudak

+0

我还使用名为'JSONParser'的类来获取'JSONObject'。错误可以在里面吗? – ciyo

我相信你目前的问题是,你需要添加"http://"等,以你的url当你发送请求。这应该照顾你目前的问题,IllegalStateException。您的下一个问题将会试图从背景Thread访问UI元素。你需要搬家,你叫setText()onPostExecute()或到Activity方法

既然你不能从后台访问UI元素此行

qrCodeText.setText("DONE!"); 

,并在那里你尝试任何其他行更新UI会给你一个错误。您可以return successonPostExecute()并按此方式执行,因为所有其他AsyncTask方法都在UI上运行。这是假设他们可以访问这些元素作为Activity的内部类或在您的构造函数中传递对它们的引用

+0

在添加“http://”并将“setText”作为注释之后,它将另外2行添加到LogCat中: E/JSON解析器(11835):解析数据时出错org.json.JSONException:Value ciyo

+0

请不要更改您的OP ...它会对其他人会造成混淆和无用。如果您遇到类似于您原始问题的问题,可以添加它。如果它是一个单独的问题,那么你可以接受一个答案,帮助解决原始问题并发布一个新问题 – codeMagic

+0

正如你可以从LogCat中看到的那样FATAL EXCEPTION:AsyncTask#1仍然没有解决。只有错误解析数据被添加到LogCat中,我无法得到解决问题的答案。 – ciyo