2016-10-15 3 views
0

Привет, ребята, помогите мне, потому что я застрял здесь, как навсегда, и каждый раз, когда я получаю свой JSON от своего веб-хоста, он всегда имеет значение null на моем веб-хосте, и когда я проверяю строку, используя Log.d эта ошибка показывает NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toString()' on a null objectне удалось загрузить JSON на прядильщик

Вот мои коды.

PHP, чтобы получить JSON

<?PHP 
include_once("connection.php"); 

session_start(); 

$where = ''; 
if (isset($_GET['driverOwner']) && isset($_GET['roles']) && isset ($_GET['driverStatus'])){ 
$where = " WHERE driverOwner = '".addslashes($_GET['driverOwner'])."' AND roles = '".addslashes($_GET['roles'])."' AND driverStatus = '".addslashes($_GET['driverSTatus'])."'"; 
} 

$query = "SELECT * FROM tbl_user ".$where.""; 

$result = mysqli_query($conn, $query); 

if($result) 

{ 
while ($row = mysqli_fetch_assoc($result)) { 

$data[] = $row; 

} 

echo json_encode($data); 
} 

mysqli_close($conn); 

?> 

Drivers1.java

public class Drivers1 { 
int id; 
String name; 

public int getId() { 
    return id; 
} 

public void setId(int id) { 
    this.id = id; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

} 

Разъем

public class Connector { 

public static HttpURLConnection connect(String urlAddress){ 

    try{ 
     URL url = new URL(urlAddress); 
     HttpURLConnection con = (HttpURLConnection) url.openConnection(); 

     //SET PROPERTIES 
     con.setRequestMethod("GET"); 
     con.setConnectTimeout(20000); 
     con.setReadTimeout(20000); 
     con.setDoInput(true); 
     return con; 

    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 
} 

DataParser.java

public class DataParser extends AsyncTask<Void,Void,Integer> { 

Context c; 
Spinner spDriver; 
String jsonData; 


ProgressDialog pd; 
ArrayList<String> driver = new ArrayList<>(); 


public DataParser(Context c, Spinner sp, String jsonData) { 
    this.c = c; 
    this.spDriver = sp; 
    this.jsonData = jsonData; 
} 



@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 

    pd = new ProgressDialog(c); 
    pd.setTitle("Fetch"); 
    pd.setMessage("Please wait... Getting drivers"); 
    pd.show(); 
} 

@Override 
protected Integer doInBackground(Void... voids) { 
    return this.parseData(); 
} 

@Override 
protected void onPostExecute(Integer result) { 
    super.onPostExecute(result); 

    pd.dismiss(); 

    if(result == 0){ 
     Toast.makeText(c, "Failed", Toast.LENGTH_SHORT).show(); 
    }else { 


     //BIND 
     ArrayAdapter adapter = new ArrayAdapter(c,android.R.layout.simple_list_item_1, driver); 
     spDriver.setAdapter(adapter); 

     spDriver.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
       Toast.makeText(c, driver.get(i), Toast.LENGTH_SHORT).show(); 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> adapterView) { 

      } 
     }); 
    } 
} 

private int parseData(){ 

    try { 
     JSONArray ja = new JSONArray(jsonData); 
     JSONObject jo = null; 

     driver.clear(); 
     Drivers1 s=null; 

     for (int i=0;i<ja.length();i++){ 
      jo=ja.getJSONObject(i); 

      int id=jo.getInt("userID"); 
      String name=jo.getString("firstname"); 

      s = new Drivers1(); 
      s.setId(id); 
      s.setName(name); 

      driver.add(name); 

     } 
     return 1; 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    return 0; 
} 
} 

Downloader.java

public class Downloader extends AsyncTask<Void,Void,String> { 

Context c; 
String urlAddress; 
Spinner spDriver; 

ProgressDialog pd; 

public Downloader(Context c, String urlAddress, Spinner spDriver) { 
    this.c = c; 
    this.urlAddress = urlAddress; 
    this.spDriver = spDriver; 
} 

@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 

    pd = new ProgressDialog(c); 
    pd.setTitle("Fetch(Downloader)"); 
    pd.setMessage("Please wait... Getting Drivers"); 
    pd.show(); 
} 

@Override 
protected String doInBackground(Void... voids) { 
    return this.downloadData(); 
} 



@Override 
protected void onPostExecute(String s) { 
    super.onPostExecute(s); 
    Log.d("Downloader",""+ s); 

    pd.dismiss(); 

    if (s == null) { 
     Toast.makeText(c, "Unable to retrieve", Toast.LENGTH_SHORT).show(); 
    }else { 
     Toast.makeText(c, "Success!", Toast.LENGTH_SHORT).show(); 

     //CALL PARSER CLASS TO PARSE 
     DataParser parser = new DataParser(c,spDriver,s); 
     parser.execute(); 
    } 
} 

private String downloadData(){ 

    HttpURLConnection con = Connector.connect(urlAddress); 
    if(con == null){ 
     return null; 
    } 

    InputStream is=null; 
    try { 
     is = new BufferedInputStream(con.getInputStream()); 
     BufferedReader br = new BufferedReader(new InputStreamReader(is)); 

     String line = ""; 
     StringBuffer response = new StringBuffer(); 

     if (br != null) { 
      while ((line = br.readLine()) != null){ 
       response.append(line+"\n"); 
      } 
     }else { 
      return null; 
     } 


    } catch (IOException e) { 
     e.printStackTrace(); 
    }finally { 
     if(is != null){ 
      try { 
       is.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

    return null; 
} 
} 

А на операции с блесной.

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_insert); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    Spinner spDriver = (Spinner) findViewById(R.id.spDriver); 

    String url = "http://carkila.esy.es/carkila/getDriver.php?driverOwner="+ pref.getString("username","")+"&roles=driver&driverStatus=active"; 

    new Downloader(InsertActivity.this,url ,spDriver).execute(); 
} 

Извините за длинный пост, но, пожалуйста, помогите мне. : C thaaaaanks :)

РЕДАКТИРОВАТЬ

Ошибка при Log.d("Downlaoder",s.toString()); протестирован на Downloader.java.

Process: com.example.kun.carkila, PID: 31098 
                    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toString()' on a null object reference 
at com.example.kun.carkila.mMySQL.Downloader.onPostExecute(Downloader.java:56) 
at com.example.kun.carkila.mMySQL.Downloader.onPostExecute(Downloader.java:24) 
at android.os.AsyncTask.finish(AsyncTask.java:632) 
at android.os.AsyncTask.access$600(AsyncTask.java:177) 
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5289) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
+0

Добавить полные журналы ошибок –

+0

Журнал ошибок отправлен сэром. :) @vrundpurohit Спасибо. –

+0

i can; t see 'Log.d (« Downlaoder », s.toString());' в вашем downloader.java где-то –

ответ

0

В вашем DataParser.Java классе результат 0 был вернуться независимо.

private int parseData(){ 

    try { 
     JSONArray ja = new JSONArray(jsonData); 
     JSONObject jo = null; 

     driver.clear(); 
     Drivers1 s=null; 

     for (int i=0;i<ja.length();i++){ 
      jo=ja.getJSONObject(i); 

      int id=jo.getInt("userID"); 
      String name=jo.getString("firstname"); 

      s = new Drivers1(); 
      s.setId(id); 
      s.setName(name); 

      driver.add(name); 

     } 
     return 1; 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    return 0; //here it will go on 
} 

Пожалуйста, добавьте журнал, чтобы проверить, что было возвращено, если он возвращается 0 вы должны получить Failed вид тостов.

+0

Итак, как я могу получить json для драйвера, я думал, что я его уже там. ... ughhh –

+0

Жаль, что я ошибся, проверьте обновленный ответ. – Shivansh

+0

Где был ответ обновлен сэр? –

Смежные вопросы