код 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 () это возможно?
Вы должны использовать библиотеку 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.
Я не инициализировал мой JSONParser jsonParser;
Я изменил это на JSONParser jsonParser = new JSONParser (); и это сработало