Android — исключение нулевого указателя при получении объекта JSON с помощью PHP?

код Android:

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

Как мне решить эту ошибку? Я использую тот же метод для отправки и получения данных с помощью php на Android, и он работает нормально? Я возвращаю успех, если имя пользователя отправлено в php файл правильно

Я использую процесс doInBackground во фрагменте и вызываю метод execute () в методе onCreateView () это возможно?

0

Решение

Вы должны использовать библиотеку Google Volley. Он быстрый по сравнению с этим методом и работает асинхронно.

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);

в public void onResponse метод вы получите требуемый ответ JSON.

0

Другие решения

Я не инициализировал мой JSONParser jsonParser;
Я изменил это на JSONParser jsonParser = new JSONParser (); и это сработало

0

По вопросам рекламы [email protected]