我正在尝试通过我的Android应用程序进行用户注册,数据是使用php在数据库中的stord。一切正常,即数据插入数据库,但无法在android中看到JSON响应。
这是我的代码
爪哇
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
// Add your data
try {
jsonParams.put("user_name", "Steve Jobs");
jsonParams.put("user_email", "steave@apple.com");
jsonParams.put("user_password", "nopassword");
jsonParams.put("user_phone_number", "1234567890");
jsonParams.put("club_member_id", "24");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("POST", jsonParams.toString()));
Log.e("mainToPost", "mainToPost" + nameValuePairs.toString());
// Use UrlEncodedFormEntity to send in proper format which we need
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
} catch (JSONException e) {
}
// HttpClient httpclient = new DefaultHttpClient();
// HttpPost httppost = new HttpPost(url);
// ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
// nameValuePairs.add(new BasicNameValuePair("user_name", "Steve"));
// nameValuePairs.add(new BasicNameValuePair("user_email", "jjdnjd"));
// nameValuePairs.add(new BasicNameValuePair("user_password", "dcds"));
// nameValuePairs.add(new BasicNameValuePair("user_phone_number", "2343"));
// nameValuePairs.add(new BasicNameValuePair("club_member_id", "24"));
// Log.e("Params", String.valueOf(nameValuePairs.toString()));
// httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// HttpResponse response = httpclient.execute(httppost);
// Creating new JSON Parser
JSONParser jParser = new JSONParser();
// Getting JSON from URL
JSONObject json = jParser.getJSONFromUrl(url);
Log.e("Data", String.valueOf(json));
PHP
$output=array();
$data = json_decode($_POST['POST'], true);
if(!empty($data)){
if(user_exists($data['user_email'])){
$result = db_conncet()->prepare("INSERT INTO `mir_users`(`name`, `password`, `email`, `phone_number`, `club_member_id`) VALUES (?,?,?,?,?)");
$data['club_member_id']=(isset($data['club_member_id']))?$data['club_member_id']:'NULL';
$temp=array(
$data['user_name'],
password_hash($data['user_password'],PASSWORD_BCRYPT),
$data['user_email'],
$data['user_phone_number'],
$data['club_member_id']
);
$result->execute($temp);
if($result->rowCount()){
$output=array(
'status'=>true,
'code'=>'103',
'message'=>'Registration success'
);
}else{
$output=array(
'status'=>false,
'code'=>'102',
'message'=>'Registration error'
);
}
}else{
$output=array(
'status'=>false,
'code'=>'102',
'message'=>'Email-ID Already taken'
);
}
echo json_encode($output);
}
Php脚本工作正常,数据已插入数据库,但我无法在我的应用中看到echo json_encode($output)
的输出。
Log.e("Data", String.valueOf(json));
在日志中获取空值。
我已经检查了php错误日志,我会得到这个
PHP Notice: Undefined index: POST in /home/zama2n/public_html/miradmin/api/functions.php on line 21
我认为这是我的应用程序中获取空json响应的原因。但插入查询工作正常 有什么问题。请帮帮我?
答案 0 :(得分:4)
你有一个url
但是两次使用它。
首先使用HttpClient发布一些数据,但没有对HttpResponse response = httpclient.execute(httppost);
进行任何操作
之后,使用json解析器调用相同的url。没有数据。
一切都没有意义。
如果你说你无法得到答复,你在说什么?
`
答案 1 :(得分:0)
通常当你需要从php输出json时,你需要一个内容类型的标题,可能就是你所缺少的。
Header('Content-Type: application/json; charset: UTF-8');
echo json_encode($output);
die();