在android中看不到来自php的JSON响应

时间:2016-01-08 09:48:10

标签: php android mysql json

我正在尝试通过我的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响应的原因。但插入查询工作正常 有什么问题。请帮帮我?

2 个答案:

答案 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();