Reputation: 1747
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.
Upvotes: 1
Views: 134
Reputation: 6110
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);
}
?>
Upvotes: 1
Reputation: 19237
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.
Upvotes: 1