php - 使用 php 和 android 连接到 mysql 时出现 NullPointerException

标签 php android mysql json nullpointerexception

我正在尝试使用一些使用 php 连接到 mysql 的教程从 URL 获取数据。

但是,当我运行代码时出现空指针异常。

Database_demo.java

 package com.database_demo;

 import java.io.BufferedReader;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.util.ArrayList;
 import java.util.List;

 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
 import org.apache.http.NameValuePair;
 import org.apache.http.client.HttpClient;
 import org.apache.http.client.entity.UrlEncodedFormEntity;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.impl.client.DefaultHttpClient;
 import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;

 import android.app.ListActivity;
 import android.net.ParseException;
 import android.os.Bundle;
 import android.widget.ArrayAdapter;
 import android.widget.Toast;

 public class Database_demo extends ListActivity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    String result = null;
    InputStream is = null;
    StringBuilder sb = null;
    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    List<String> r = new ArrayList<String>();

    try{

    //http post
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://uragon-dev.com/synergy/webservices.php?action=displayAll");
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    HttpResponse response = httpclient.execute(httppost);
    HttpEntity entity = response.getEntity();
    is = entity.getContent();
    }
    catch(Exception e){
        Toast.makeText(getBaseContext(),e.toString() ,Toast.LENGTH_LONG).show();
   }

    //Convert response to string  
    try
    {
      BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));

      sb = new StringBuilder();

      String line = null;

      while ((line = reader.readLine()) != null) 
      {
         sb.append(line + "\n");
      }

      is.close();

      result = sb.toString();
    }
    catch(Exception e)
    {
        Toast.makeText(getBaseContext(),e.toString() ,Toast.LENGTH_LONG).show();
    }
    //END Convert response to string   
    try{
            JSONArray jArray = new JSONArray(result);
            JSONObject json_data=null;
            for(int i=0;i<jArray.length();i++)
            {
               json_data = jArray.getJSONObject(i);
               r.add(json_data.getString("users"));
           }
           setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, r));
        }
        catch(JSONException e1){
            Toast.makeText(getBaseContext(),e1.toString() ,Toast.LENGTH_LONG).show();
        } catch (ParseException e1) {
            Toast.makeText(getBaseContext(),e1.toString() ,Toast.LENGTH_LONG).show();
    }

}
 }

logcat 中的错误指向这一行。

 try{
            JSONArray jArray = new JSONArray(result);

这是在 url http://uragon-dev.com/synergy/webservices.php?action=displayAll 上获取的数据

{"users":[{"username":"jokerxvier","firstname":"jason","lastname":"javier"},{"username":"migz","firstname":"miguel","lastname":"rivera"}],"success":1}

可能是什么问题导致了这种情况?另外我想知道如何将数据传递到 url 而不仅仅是从中获取数据。安卓新手在这里。谢谢!

最佳答案

你说错误在 JSONArray jArray = new JSONArray(result); 上。如果是这种情况,您可以尝试检查 result 的值吗?也许使用 Log 将其显示在 Logcat 上。

如果错误是NetworkOnMainThread,您将需要检查来自@user2045570 的答案

希望对你有帮助,祝你好运

里德

关于php - 使用 php 和 android 连接到 mysql 时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18995366/

相关文章:

php - Mysql:使用更新设置列的特定值

php - 关联数组第二高值与键

php - 如何将 Facebook 评论数保存到 Mysql 数据库?

android - TextField controlled controller.addListener(() 在使用 controller.clear 后被多次调用

mysql - 如何根据两个条件得到COUNT(*)

php - 非拉丁字符和哎哟

php - 如何在 WooCommerce 类别页面中缩短(截断)长产品标题?

android - 如何修复 React Native 中的 "TypeError: undefined is not an object (evaluating ' _reactNativeCamera.default.constants')”错误?

java - Android Eclipse 字符串 Txt + Edittext + 字符串 Txt = 崩溃

sql - mysql - 按唯一字段合并表