2015-11-26 2 views
1

Я хочу передать моему серверу id, и он сделает мне запрос и отправлю мне некоторую информацию, но похоже, что сервер не поймает значение, которое я отправляю. здесь есть мой код:Android volley library, method return null object

private void makeJsonObjectRequest() { 



    JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET, 
      Config.url_info, null, new Response.Listener<JSONObject>() { 

     @Override 
     public void onResponse(JSONObject response) { 
      Log.d("INFO RESPONSE: ", response.toString()); 

      try { 
       int success = response.getInt(TAG_SUCCESS); 
       if(success == 1) { 
        // successfully received details 
        JSONArray infoObj = response.getJSONArray(TAG_INFO); // JSON Array 

        // get first course object from JSON Array 
        info = infoObj.getJSONObject(0); 
        showResult(); 

       } 
      }catch (JSONException e){ 
       e.printStackTrace(); 
       Toast.makeText(getApplicationContext(),"Error: " + e.getMessage(), 
         Toast.LENGTH_LONG).show(); 
      } 


     } 
    }, new Response.ErrorListener() { 

     @Override 
     public void onErrorResponse(VolleyError error) { 
      VolleyLog.d("VOLLEY ERROR: ", "Error: " + error.getMessage()); 
      Toast.makeText(getApplicationContext(), 
        error.getMessage(), Toast.LENGTH_SHORT).show(); 


     } 
    }){ 
    @Override 
    protected Map<String, String> getParams() throws AuthFailureError { 
     Map<String,String> params = new HashMap<>(); 
     //Adding parameters to request 
     params.put("id", id); 
     //returning parameter 
     return params; 
    } 
}; 

    // Adding request to request queue 
    //AppController.getInstance().addToRequestQueue(jsonObjReq); 
    RequestQueue requestQueue = Volley.newRequestQueue(this); 
    requestQueue.add(jsonObjReq); 
} 

Ошибка в переменной информации, журнал ошибок говорят, что нулевое значение. «java.lang.NullPointerException: попытка вызвать виртуальный метод„java.lang.String org.json.JSONObject.getString (java.lang.String)“на нулевой объект»

Здесь есть мой PHP-код :

<?php 

// array for JSON response 
$response = array(); 

// include db connect class 
require_once __DIR__ . '/db_connect.php'; 
//include query class 
require_once __DIR__ . '/query.php'; 

// connecting to db 
$db = new DB_CONNECT(); 

// check for post data 

if (isset($_GET["id"])) { 
    $id = $_GET['id']; 

    // get a product from products table 
    $result = $db ->sth -> query("SELECT * FROM info WHERE id = $id"); 

    if (!empty($result)) { 
     // check for empty result 
     if (mysqli_num_rows($result) > 0) { 

     $result = mysqli_fetch_array($result); 
     $dett = array(); 
     $dett["where"] = $result["where"]; 
     $dett["when"] = $result["when"]; 
     $dett["cost"] = $result["cost"]; 
     $dett["link"] = $result["link"]; 

     // success 
     $response["success"] = 1; 

     // user node 
     $response["info"] = array(); 

     array_push($response["info"], $dett); 

     // echoing JSON response 
     echo json_encode($response); 
    } else { 
     // no product found 
     $response["success"] = 0; 
     $response["message"] = "No course found"; 

     // echo no users JSON 
     echo json_encode($response); 
    } 
} else { 
    // no product found 
    $response["success"] = 0; 
    $response["message"] = "No course found"; 

    // echo no users JSON 
    echo json_encode($response); 
} 
} else { 
// required field is missing 
$response["success"] = 0; 
$response["message"] = "Required field(s) is missing"; 

// echoing JSON response 
echo json_encode($response); 
} 
?> 

Спасибо за чтение.

Редактировать. Я попытался изменить свой php-файл, если я задал переменную $ id с определенным номером, который он работает, поэтому, возможно, проблема может быть в $ _get для php (но я не думаю, потому что раньше я использовал старую библиотеку, и она работала), Я попытался вставить тост-сообщение в метод карты, но он не отображался. экран остается белым, а значение успеха 0

ответ

0

попробовать сделать такой код ..

public void sendContactMessage(final String sfullname, final String semail, final String smessage){ 
    class DownloadJSONsendContactMessage extends AsyncTask<String, Void, String> { 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      mProgressDialog = ProgressDialog.show(getActivity(), null, null, true, false); 
      mProgressDialog.setContentView(R.layout.progressdialog); 
     } 

     @Override 
     protected String doInBackground(String... params) { 
      ArrayList<NameValuePair> dataToSend = new ArrayList<>(); 
      dataToSend.add(new BasicNameValuePair("fullname", sfullname)); 
      dataToSend.add(new BasicNameValuePair("email", semail)); 
      dataToSend.add(new BasicNameValuePair("message", smessage)); 

      HttpParams httpRequestParams = new BasicHttpParams(); 
      HttpConnectionParams.setConnectionTimeout(httpRequestParams, CONNECTION_TIMEOUT); 
      HttpConnectionParams.setSoTimeout(httpRequestParams, CONNECTION_TIMEOUT); 

      DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams()); 
      HttpPost httppost = new HttpPost(SERVER_ADDRESS + "sendcontactmessage.php"); 

      // Depends on your web service 
      //httppost.setHeader("Content-type", "application/json"); 

      InputStream inputStream = null; 
      String sendcontactresult = null; 
      try { 
       httppost.setEntity(new UrlEncodedFormEntity(dataToSend)); 
       HttpResponse response = httpclient.execute(httppost); 
       HttpEntity entity = response.getEntity(); 

       inputStream = entity.getContent(); 
       // json is UTF-8 by default 
       BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8); 
       StringBuilder sb = new StringBuilder(); 

       String line = null; 
       while ((line = reader.readLine()) != null) 
       { 
        sb.append(line + "\n"); 
       } 
       sendcontactresult = sb.toString(); 
      } catch (Exception e) { 
       // Oops 
      } 
      finally { 
       try{if(inputStream != null)inputStream.close();}catch(Exception squish){} 
      } 
      return sendcontactresult; 
     } 

     @Override 
     protected void onPostExecute(String sendcontactresult){ 
      // Close the progressdialog 
      mProgressDialog.dismiss(); 
      sendcontactsuccessful(); 
     } 
    } 
    DownloadJSONsendContactMessage g = new DownloadJSONsendContactMessage(); 
    g.execute(); 
} 
+0

Я пытался, но он не работает, я изменил положение showResult() метод, не так ли не сбой, но успех il 0, php не достигает идентификатора, который я передаю из метода getParam(). – Daniel

+0

попробуйте запустить php-код, чтобы увидеть результат. – Joe

+0

Я добавил ваш код вверху php-файла в $ varibale1. Я добавил «1», а в переменной 2 добавил «успех», вывод: { "ответ": [{ "успех": "1", "сообщение": "успех"}]} { "0": { "успех": "1", "сообщение": "успех"}, "успех" : 0, «message»: «Обязательные поля отсутствуют»} – Daniel