1

I want to make a simple HTTPRequest to a php script for a user registration with some parameters(name,email,password, etc). I have tried many tutorials from internet but nothing works for me. HTTP POST throws NullpointerException . in backend also it shows null.

My code is :

        //JSON Node Names

        private static final String TAG_ID = "status";
        private static final String TAG_NAME = "code";
        private static final String TAG_EMAIL = "message";
        //POST data
        HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost(url);

                // Add your data
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(5);
                nameValuePairs.add(new BasicNameValuePair("user_name", "Steve"));
                nameValuePairs.add(new BasicNameValuePair("user_email", "jjdnjdn"));
                nameValuePairs.add(new BasicNameValuePair("user_password", "dcds"));
                nameValuePairs.add(new BasicNameValuePair("user_phone_number", "2343"));
                nameValuePairs.add(new BasicNameValuePair("club_member_id", "24"));
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
     //For receiving response
// Creating new JSON Parser
            JSONParser jParser = new JSONParser();

            // Getting JSON from URL
            JSONObject json = jParser.getJSONFromUrl(url);
            Log.e("Data", String.valueOf(json));
            try {
     String id = json.getString(TAG_ID);
                String name = json.getString(TAG_NAME);
                String email = json.getString(TAG_EMAIL);
                Toast.makeText(getContext(), id , Toast.LENGTH_SHORT).show();
                Toast.makeText(getContext(), name , Toast.LENGTH_SHORT).show();
                Toast.makeText(getContext(), email , Toast.LENGTH_SHORT).show();
     } catch (JSONException e) {
                e.printStackTrace();
            }

        }

Logcat Error

      E/JSON Parser: Error parsing data org.json.JSONException: Value null of type org.json.JSONObject$1 cannot be converted to JSONObject
      E/Data: null
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.json.JSONObject.getString(java.lang.String)' on a null object reference

PHP code

<?php
  print_r($_POST);
?>

getting null array.

13
  • do you try to call url in browser ? Commented Dec 30, 2015 at 9:56
  • can you post your json Commented Dec 30, 2015 at 9:56
  • @Sree: yes i did it works well. So its not the problem with URL. Commented Dec 30, 2015 at 9:58
  • @mohit i've tried this echo jsone_encode($_POST) but will get a null array Commented Dec 30, 2015 at 10:01
  • does it showing json on browser? Commented Dec 30, 2015 at 10:03

2 Answers 2

1

jParser.getJSONFromUrl(url) seems to GET instead of POST (and anyway you haven't use httppost or referenced it anyhow from jParser, so it couldn't POST your data for sure.

In th ephp you might also need to send a correct Content-type header before you echo the json body, as jParser might depend on it.

Sign up to request clarification or add additional context in comments.

2 Comments

So how could i use Httppost?
you can google "android http post" and chose one of the thousands of answers. Even here on stackoverflow you'll fund at least 100 examples. When you get the json as a String you can then parse it with JsonParser
1

Try this ::

App Side

private static final String TAG_ID = "status";
private static final String TAG_NAME = "code";
private static final String TAG_EMAIL = "message";


ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("user_name", "Steve"));
nameValuePairs.add(new BasicNameValuePair("user_email", "jjdnjdn"));
nameValuePairs.add(new BasicNameValuePair("user_password", "dcds"));
nameValuePairs.add(new BasicNameValuePair("user_phone_number", "2343"));
nameValuePairs.add(new BasicNameValuePair("club_member_id", "24"));

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(URL);

try {

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);

if(response.getStatusLine().getStatusCode()==200){

     JSONObject jsonResponse = new JSONObject(response);

     String id = jsonResponse .getString(TAG_ID);
     String name = jsonResponse .getString(TAG_NAME);
     String email = jsonResponse .getString(TAG_EMAIL);

}

} catch (JSONException e) {

} catch (UnsupportedEncodingException e) {

} catch (IOException e) {

}

Server Side

<?php


file_put_contents(__DIR__."/request_log.txt", "Request : ".json_encode($_REQUEST));

if(!empty($_REQUEST))
{

$user_name = $_REQUEST["user_name"];
$user_email = $_REQUEST["user_email"];
$user_password = $_REQUEST["user_password"];
$user_phone_number = $_REQUEST["user_phone_number"];
$club_member_id = $_REQUEST["club_member_id"];


/*

Add your code

*/

$result = array("status" => "status_value", "code" => "code_value", "message" => "message");

file_put_contents(__DIR__."/request_log.txt", "Result : ".json_encode($result), FILE_APPEND);

echo json_encode($result);

}

?>

15 Comments

logcat shows Cannot find a POST request in register .. in PHP $data = json_decode($_POST["data"], true); is empty
Did you get any exception in app side? Please log all exceptions and check if any exceptions come.
NullpointerException on JSONObject.getString() comes because response from server is null. Please log jsonParams.toString() before this => ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
I have updated server side script. Please check request_log.txt after posting request to server from app.
Can you please comment request_log.txt data?
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.