#1
  1. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Jan 2014
    Posts
    10
    Rep Power
    0

    Null Pointer Exception In Method Boolean.Org.Json.Jsonobject Do in background async t


    I designed app to make order for pizza food restaurant
    I show userid,menu id ,address,longtiude,latitude then press on button make order
    Error show after I press button and found in async task doin background
    It give me fatal exception error
    Code:
    An error occurred while executing doInBackground()
    and it show to me two lines have proplem
    AddNewOrder.doInBackground(Summary.java:113)
    AddNewOrder.doInBackground(Summary.java:77)
    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean org.json.JSONObject.getBoolean(java.lang.String)' on a null object reference
    package com.pizza_final_project_app.pizza_final_project;
    Code:
    import android.app.Activity;
    import android.app.ProgressDialog;
    import android.content.Intent;
    import android.content.SharedPreferences;
    import android.os.AsyncTask;
    import android.preference.PreferenceManager;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import org.apache.http.NameValuePair;
    import org.apache.http.message.BasicNameValuePair;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class Summary extends Activity {
    SharedPreferences preferences;
    private ProgressDialog pDialog;
    //JSONParser jsonParser = new JSONParser();
    boolean errorFound;
    TextView textaddress;
    TextView textlongtiude;
    TextView textlatitude;
    TextView text2;
    TextView textuser;
    Button btnorder;
    private static final String TAG_SUCCESS = "success";
    private static final String TAG = Summary.class.getSimpleName();
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_summary);
    text2=(TextView)findViewById(R.id.textView3);
    textaddress=(TextView)findViewById(R.id.textaddress);
    textuser=(TextView)findViewById(R.id.textView4);
    textlongtiude=(TextView)findViewById(R.id.textlongtiude);
    textlatitude=(TextView)findViewById(R.id.textlatitude);
    Intent i = getIntent();
    String id = i.getStringExtra("Data4");
    String address = i.getStringExtra("Data8");
    String longtiude = i.getStringExtra("Data9");
    String latitude = i.getStringExtra("Data10");
    text2.setText(id);
    textaddress.setText(address);
    textlongtiude.setText(longtiude);
    textlatitude.setText(latitude);
    preferences= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    
    String email=preferences.getString("email","");
    textuser.setText(email);
    pDialog = new ProgressDialog(this);
    pDialog.setCancelable(false);
    btnorder=(Button)findViewById(R.id.button2);
    btnorder.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v)
    {
    addOrder(textuser.getText().toString().trim(), text2.getText().toString().trim(),
    textaddress.getText().toString().trim(), textlongtiude.getText().toString().trim(),
    textlatitude.getText().toString().trim());
    
    }
    });
    
    
    }
    //line 77
    class AddNewOrder extends AsyncTask<String, String, String> {
    
    @Override
    protected void onPreExecute() {
    super.onPreExecute();
    pDialog = new ProgressDialog(Summary.this);
    pDialog.setMessage("Making Order...");
    pDialog.setIndeterminate(false);
    pDialog.setCancelable(true);
    pDialog.show();
    }
    
    protected String doInBackground(String... args) {
    final JSONParser jsonParser = new JSONParser();
    // Building Parameters
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("userID", args[0]));
    params.add(new BasicNameValuePair("menuID", args[1]));
    params.add(new BasicNameValuePair("address", args[2]));
    params.add(new BasicNameValuePair("longitude", args[3]));
    params.add(new BasicNameValuePair("latitude", args[4]));
    
    
    JSONObject jObj = jsonParser.makeHttpRequest(AppConfig.URL_Order,
    "POST", params);
    
    try {
    //Line 113
    boolean error = jObj.getBoolean("error"); 
    if (!error) {
    
    errorFound=false;
    } else {
    errorFound=true;
    
    }
    } catch (JSONException e) {
    e.printStackTrace();
    }
    
    return null;
    }
    protected void onPostExecute(String file_url) {
    if (pDialog.isShowing()) {
    pDialog.dismiss();
    if (!errorFound){
    Toast.makeText(getApplicationContext(), "User successfully registered. Try login now!", Toast.LENGTH_LONG).show();
    
    
    Intent intent = new Intent(
    Summary.this,
    FinalResult.class);
    startActivity(intent);
    finish();
    }
    else{
    Toast.makeText(getApplicationContext(), "An Error occoured!", Toast.LENGTH_LONG).show();
    
    }
    }
    }
    
    }
    */
    private void addOrder(final String userID, final String menuID, final String address,
    final String longitude, final String latitude) {
    
    new AddNewOrder().execute(userID, menuID, address, longitude, latitude);
    
    }
    
    }
    
    
    
    Class AppConfig
    package com.pizza_final_project_app.pizza_final_project;
    
    public class AppConfig {
    
    public static String URL_Order = "http://amit-learning.com/myPizza/Api_v2.php?functi...";
    
    json parser
    package com.pizza_final_project_app.pizza_final_project;
    
    import android.util.Log;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.NameValuePair;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.client.utils.URLEncodedUtils;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.UnsupportedEncodingException;
    import java.util.List;
    
    public class JSONParser {
    
    static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";
    
    // constructor
    public JSONParser() {
    
    }
    
    // function get json from url
    // by making HTTP POST or GET mehtod
    public JSONObject makeHttpRequest(String url, String method,
    List<NameValuePair> params) {
    
    // Making HTTP request
    try {
    
    // check for request method
    if(method == "POST"){
    // request method is POST
    // defaultHttpClient
    DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpPost httpPost = new HttpPost(url);
    httpPost.setEntity(new UrlEncodedFormEntity(params));
    
    HttpResponse httpResponse = httpClient.execute(httpPost);
    HttpEntity httpEntity = httpResponse.getEntity();
    is = httpEntity.getContent();
    
    }else if(method == "GET"){
    // request method is GET
    DefaultHttpClient httpClient = new DefaultHttpClient();
    String paramString = URLEncodedUtils.format(params, "utf-8");
    url += "?" + paramString;
    Log.d("data",url);
    HttpGet httpGet = new HttpGet(url);
    
    HttpResponse httpResponse = httpClient.execute(httpGet);
    HttpEntity httpEntity = httpResponse.getEntity();
    is = httpEntity.getContent();
    } 
    
    
    } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    } catch (ClientProtocolException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    
    try {
    BufferedReader reader = new BufferedReader(new InputStreamReader(
    is, "iso-8859-1"), 8);
    StringBuilder sb = new StringBuilder();
    String line = null;
    while ((line = reader.readLine()) != null) {
    sb.append(line + "\n");
    }
    is.close();
    json = sb.toString();
    Log.d("json","data is "+json);
    
    } catch (Exception e) {
    Log.e("Buffer Error", "Error converting result " + e.toString());
    }
    try {
    jObj = new JSONObject(json);
    } catch (JSONException e) {
    Log.e("JSON Parser", "Error parsing data " + e.toString());
    }
    
    // return JSON String
    return jObj;
    
    }
    }
  2. #2
  3. Lord of the Dance
    Devshed Specialist (4000 - 4499 posts)

    Join Date
    Oct 2003
    Posts
    4,131
    Rep Power
    2011
    When you call makeHttpRequest you return the JSON object jObj.
    As the errors message says it is null, you have to see what happens in this place:
    Code:
    try {
    jObj = new JSONObject(json);
    } catch (JSONException e) {
    Log.e("JSON Parser", "Error parsing data " + e.toString());
    }
    Nice that you use the code tags, just try to keep the indention also, as it will make it easier to read.
  4. #3
  5. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Jan 2014
    Posts
    10
    Rep Power
    0
    Thank you for reply
    I get this error End of input at character 0 of
    after i run code below as you mention before
    Code:
    try {
    jObj = new JSONObject(json);
    } catch (JSONException e) {
    Log.e("JSON Parser", "Error parsing data " + e.toString());
    }

IMN logo majestic logo threadwatch logo seochat tools logo