从android错误发送json到php:Undefined index:ID

时间:2018-03-29 09:46:06

标签: php android apache undefined-index

我尝试将数据从我的应用Android发送到来自php文件的db mysql。

但它总是给我这个错误:

  

[Sat Mar 24 12:56:42.061845 2018] [php7:notice] [pid 1035] [client 192.168.1.151   :56068] PHP注意:未定义的索引:ID / in /var/www/html/Find_First.php    第18行

以下是android代码: 我用来发送的发言人

HttpURLConnection con = utilityBOperation.Connect(urlAddress);
      //  Log.v(TAG,"Sender/ send: valore del risultato della connessione al server"+ con);

        if (con==null){
            Log.v(TAG,"Sender: Send : Il risultato del HttpURLConnection è nullo : " + con);
            return null;
        }
        try {
            Log.v(TAG,"Sender: Send : Il risultato del HttpURLConnection non è nullo : " );
            OutputStream os = con.getOutputStream();

            // Write
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os,"UTF-8"));
            bw.write(new DataPackager(Id_String,GRM_Family,GRM_Prodoct,MK_Nation,MK_Company).packData());

            Log.v(TAG,"Sender: Send : Il packData è stato inviato ");

            bw.flush();

            // RELEASE RES
           // Verifico i valori dolpo l' invio dei dati
            Log.v(TAG,"Sender: Send : Il risultato del HttpURLConnection " +
                            "Dopo l'invio dello streaming dati : " + con);
            Log.v(TAG,"Sender: Send : Il risultato del outputstreaming : " + os);

            bw.close();
            os.close();

            //HAS IT BEEN SUCCESSFUL?

            int responseCode=con.getResponseCode();

            Log.v(TAG,"Sender: Send : Il valore della risposta dell 'invio al server è:   " + responseCode);
            Log.v(TAG,"Sender: Send : Il valore della risposta dell 'invio al server è:   " + con.getResponseMessage());
            Log.v(TAG,"Sender: Send : Il valore della risposta dell 'invio al server getErrorStream():   " + con.getErrorStream());

            if (responseCode== HTTP_OK){

                //GET EXACT RESPONSE

                Log.v(TAG,"Sender: Send : Il responsecode è  Http_Ok  " + HTTP_OK );
                BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
                StringBuffer response = new StringBuffer();

                Log.v(TAG,"Sender: Send : Recupero il valore dello StringBUffer : " + response);

                String line;

                //READ LINE BY LINE
                while ((line=br.readLine())!= null){

                    response.append(line);
                }
                // RELEASE RES
                br.close();

                String JsonData = response.toString();
                JSONObject JsonOB = new JSONObject(JsonData);
                JSONArray parentArray = JsonOB.getJSONArray("response");
                JSONObject finalOB = parentArray.getJSONObject(0);

                Log.v(TAG,"Sender: Send : Il valore del Json che ricevo : " + finalOB);

                Find_Place.Rest_Data_to_Json(finalOB);
                return response.toString();

            }else {
                Log.v(TAG,"Sender: Send : La risposta dell 'invio al server è negativa :   " + responseCode);

        }

        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return null;
    }

- 我创建连接的类

public static HttpURLConnection Connect(String urlAddress) {

        // TODO: Sono nel connect

        HttpURLConnection con;
        try {

            Log.v(TAG, "utilityBOopreation:Connect: entrato nel connect");

            URL url = new URL(urlAddress);
            con = (HttpURLConnection) url.openConnection();

            // set propertis
            con.setRequestMethod("POST");
            con.setConnectTimeout(1000);
            con.setReadTimeout(2000);
          //  con.setRequestProperty("USER-AGENT","Mozilla/5.0");
            con.setDoInput(true);
            con.setDoOutput(true);
          //  Log.v(TAG, "utilityBOopreation:Connect: Valore della connessione :  " + con);

            //return con;


        } catch (MalformedURLException e) {
            e.printStackTrace();
            Log.v(TAG, "utilityBOopreation:Connect: La connessione non è andata a buon fine : " + e);
            return null;
        } catch (IOException e) {
            e.printStackTrace();
            Log.v(TAG, "utilityBOopreation:Connect: La connessione non è andata a buon fine : " + e);
            return null;
        }
        return con;

我创建mo json的类

public String packData(){

        Log.v(TAG,"DataPackager:packData: Entro nel packData");

        JSONObject jo= new JSONObject();
        StringBuffer packedData =new StringBuffer();


        try {
            jo.put("ID",Id);
            jo.put("GRM",GRM);
            / .
                 altri campi
             ./


            Boolean FirstValue=true;
            Iterator it=jo.keys();
            Log.v(TAG,"DataPackager:packData: Creo il mio file Json ... " + jo);


            do {
                String Key=it.next().toString();
                String value=jo.get(Key).toString();
                if (FirstValue){
                    FirstValue=false;
                }else {
                    packedData.append("&");
                }

                packedData.append(URLEncoder.encode(Key,"UTF-8"));
                packedData.append("=");
                packedData.append(URLEncoder.encode(value,"UTF-8"));

            }while (it.hasNext());
            Log.v(TAG,"DataPackager:packData: Il packData Prima di mandarlo via stream ... " + packedData);

            return packedData.toString();

        } catch (JSONException | UnsupportedEncodingException e) {
            e.printStackTrace();
            Log.v(TAG,"DataPackager:packData:non sono riuscito a creare il json ... " + e.getMessage());
        }
        return null;
    }

这是服务器上的php文件,只有POST的接收部分

$host = 'localhost';
$username = 'user';
$pwd = '';
$db = 'mioDB';

if (isset($_POST)){

  $ID = $_POST['ID'];
  $GRM = $_POST['GRM'];
  /
 altri valori
  /
  $response = array();

  $connect = mysqli_connect($host,$username,$pwd,$db) or die ('Unabletp connect');

1 个答案:

答案 0 :(得分:0)

正如你在json收到的数据。他们不会使用POST进行重试。您必须使用file_get_contents("php://input");

$data_json = file_get_contents("php://input");
$data = json_decode($data_json,true);

然后执行以下操作

$ID = $data['ID'];
$GRM = $data['GRM'];