2014-10-31 77 views
0

的Android代碼:空指針異常,而使用PHP檢索json對象?

protected String doInBackground(String... params) { 
     // TODO Auto-generated method stub 

     try { 
      SharedPreferences prefs = getActivity().getSharedPreferences("Login_Prefs", 0); 

      username = prefs.getString("username", "defValue"); 

      String url = "http://www.iloveexpressions.com/eh/viewFriendList.php"; 

      nameValuePairs = new ArrayList<NameValuePair>(1); 

      Log.d("Parameters ", username); 

      nameValuePairs.add(new BasicNameValuePair("username", username.trim())); 

      Log.d("name value pairs", nameValuePairs.toString()); 

      JSONObject json = jsonParser.makeHttpRequest(url, "POST", 
        nameValuePairs); 

      Log.d("Printing after json", json.toString()); 

      success = json.getString("success"); 

      Log.d("Success : ", success); 

     } catch (Exception e) { 
      Log.d("Error : ", e.toString()); 
     } 

PHP代碼:

<?php 

require 'connection.php'; 

    $response = array(); 

if(isset($_POST["username"])) 
{ 
$username = $_POST["username"]; 

$response["success"] = 1; 

echo json_encode($response); 
} 
else 
{ 
$response["success"] = 0; 

echo json_encode($response); 
} 

?> 

這是我得到的日誌中的錯誤:

Parameters(30889): aaa 

name value pairs(30889): [username=aaa] 

Error :(30889): java.lang.NullPointerException 

我怎麼解決這個問題?我使用相同的方法來發送和檢索數據在Android上使用PHP和它工作正常?如果用戶名正確發送到php文件,我將返回成功

我在片段中使用doInBackground進程並在onCreateView()方法中調用execute()方法可能嗎?

回答

0

你應該使用谷歌的排雷庫。與此方法相比,它速度快並且異步工作。

RequestQueue queue = Volley.newRequestQueue(context); 
    JsonObjectRequest jsonObject = new JsonObjectRequest (Request.Method.POST,"http://www.iloveexpressions.com/eh/viewFriendList.php", new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 

     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 

     } 
    }){ 
     @Override 
     protected Map<String,String> getParams(){ 
      Map<String,String> params = new HashMap<String, String>(); 
      params.put("usename",username);  
      return params; 
     } 

     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      Map<String,String> params = new HashMap<String, String>(); 
      params.put("Content-Type","application/x-www-form-urlencoded"); 
      return params; 
     } 
    }; 
    queue.add(jsonObject); 

in public void onResponse方法你會得到你需要的json響應。

+0

謝謝費薩爾我一定會看看。 – 2014-10-31 18:17:44

+0

我還沒有初始化我的JSONParser jsonParser;我將其更改爲JSONParser jsonParser = new JSONParser();它的工作 – 2014-10-31 18:18:47

+0

歡迎@HharhilShah – FAISAL 2014-10-31 18:18:53

0

我還沒有初始化我的JSONParser jsonParser; 我把它改爲JSONParser jsonParser = new JSONParser();它的工作