2017-04-18 85 views
0

我正在尝试send data from Android app to Raspberry pi from this link。 我已经完成了它提到的所有步骤,但是当我尝试运行该应用程序时,它给了我一个android studio logcat中的错误。java.lang.NullPointerException:试图在空对象引用上调用虚拟方法'int org.json.JSONObject.getInt(java.lang.String)'

错误类似于:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'int org.json.JSONObject.getInt(java.lang.String)'。

与错误的线是102 & 80是

线80: - > INT成功= json.getInt( “成功”);

线102: - >如果(成功== 1)

这是我的Android Studio代码。我在MainActivity.java类得到错误:

MainActivity.java

public class MainActivity extends ActionBarActivity { 

private ProgressDialog pDialog; 

JSONParser jsonParser = new JSONParser(); 

EditText editText; 

@Override 
protected void onDestroy() { 
    try { 
     if (pDialog != null && pDialog.isShowing()) { 
      pDialog.dismiss(); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    super.onDestroy(); 
} 

EditText editText2; 
String String_name; 
String Int_Part; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    editText = (EditText) findViewById(R.id.Name); 
    editText2 = (EditText) findViewById(R.id.part_nr); 
    String_name = editText.getText().toString(); 
    Int_Part = editText2.getText().toString(); 
} 


public void Send(View view) { 
    new Create_Part().execute(); 
} 

class Create_Part extends AsyncTask<String, String, String> { 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     pDialog = new ProgressDialog(MainActivity.this); 
     pDialog.setMessage("Sending part to the database..."); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(true); 
     pDialog.show(); 
    } 

    @Override 
    protected String doInBackground(String... args) { 


     List<NameValuePair> params = new ArrayList<>(); 
     params.add(new BasicNameValuePair("Name", String_name)); 
     params.add(new BasicNameValuePair("part_nr", Int_Part)); 

     JSONObject json = jsonParser.makeHttpRequest("192.168.0.190/db_create.php.php", "POST", params); 

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

      if(success == 1){ 
       finish(); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     return null; 
    } 

    protected void onPostExecute(String file_url){ 
     pDialog.dismiss(); 
    } 
} 
} 

logcat的错误:

04-18 16:26:11.493 2818-3010/com.example.androidphp2 E/AndroidRuntime: FATAL 
EXCEPTION: AsyncTask #4 
     Process: com.example.androidphp2, PID: 2818 
     java.lang.RuntimeException: An error occurred while executing doInBackground()             
     at android.os.AsyncTask$3.done(AsyncTask.java:309) 
     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) 
     at java.util.concurrent.FutureTask.setException(FutureTask.java:223) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:242) 
     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
     at java.lang.Thread.run(Thread.java:818) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int org.json.JSONObject.getInt(java.lang.String)' on a null object reference 
     at com.example.androidphp2.MainActivity$Create_Part.doInBackground(MainActivity.java:102) 
     at com.example.androidphp2.MainActivity$Create_Part.doInBackground(MainActivity.java:80) 
     at android.os.AsyncTask$2.call(AsyncTask.java:295) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)  
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)  
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)  
     at java.lang.Thread.run(Thread.java:818)  
+3

问题在这里'int success = json.getInt(“success”);' –

+1

看起来像'jsonParser.makeHttpRequest(“192.168.0.190/db_create.php.php”,“POST”,params);'返回null – Jens

+0

你没有得到任何回应或者可能是空的响应,这就是为什么你的'json'为空,你正在尝试使用它。在使用'json.getIntent()'之前也要进行空检查。 –

回答

0

尝试这样的:

int success = Integer.parseInt(json.getString("success")); 

希望它能起作用

+0

应用此。仍然是相同的错误.. :( –

+0

我没有得到任何响应或可能为空响应,这就是为什么我的JSON为空,我试图使用它。这可能是可能的原因。我必须检查PHP文件响应 –

+0

你继续并检查响应 –

相关问题