Invio di dati da Android a server con dati JSON

Sto provando a submit dati dall'applicazione Android al server web. La mia applicazione android funziona correttamente. Comunque il codice di php ha problemi.

<?php $json = $_SERVER['HTTP_JSON']; echo "JSON: \n"; var_dump($json); echo "\n\n"; $data = json_decode($json,true); echo "Array: \n"; var_dump($data); echo "\n\n"; $name = $data['name']; $pos = $data['position']; echo "Result: \n"; echo "Name : ".$name."\n Position : ".$pos; ?> 

Errori:

  • Live Wallpaper Tutorial
  • La vista della griglia non è illuminata quando si preme
  • Job Scheduler non è in esecuzione su Android N
  • Librerie di filter delle immagini Android
  • Servizi Android e RESTful
  • L'icona di errore EditText e la password di visualizzazione non è stata trovata
  •  Notice: Undefined index: HTTP_JSON in C:\wamp\www\jsonTest.php on line 2 ( line 2 : $json = $_SERVER['HTTP_JSON']; ) 

    Non ho trovato questi problemi ragione. Mi potete aiutare ? (nota: sto usando il server wamp)

    Ecco la relativa fonte Android:

     // Create a new HttpClient and Post Header HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("10.0.2.2:90/jsonTest.php";); JSONObject json = new JSONObject(); try { json.put("name", "flower"); json.put("position", "student"); JSONArray postjson=new JSONArray(); postjson.put(json); httppost.setHeader("json",json.toString()); httppost.getParams().setParameter("jsonpost",postjson); System.out.print(json); HttpResponse response = httpclient.execute(httppost); if(response != null) { InputStream is = response.getEntity().getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); StringBuilder sb = new StringBuilder(); String line = null; try { while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } } catch (IOException e) { e.printStackTrace(); } finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } text = sb.toString(); } tv.setText(text); }catch (ClientProtocolException e) { // TODO Auto-generated catch block } catch (IOException e) { // TODO Auto-generated catch block } 

    Questo codice funziona correttamente sul lato android (nessun errore). Ma il lato di php ha problemi .. Grazie.

  • MediaStore.Audio.Albums.ALBUM_ID colonna non valida
  • Elemento di elenco personalizzato per ListView Android
  • Come provare facilmente gli acquisti in-app, senza pubblicarlo o firmarlo in primo luogo?
  • Azure Mobile Service con authentication di Facebook: get informazioni sull'utente
  • Come aggiungere in modo programmato EditTextPreferences al mio PreferenceFragment?
  • android: logging applicazione per ricevere sms
  • 3 Solutions collect form web for “Invio di dati da Android a server con dati JSON”

    Questo non è where il JSON è:

     $json = $_SERVER['HTTP_JSON']; 

    Forse avete significato:

     $json = $_POST['HTTP_JSON']; 

    Dove HTTP_JSON è il nome della variabile POST che hai assegnato al tuo JSON nell'applicazione Android.

    Il resto degli errori deriva dal fatto che json_decode non riesce perché non si sta leggendo correttamente i dati JSON dalla richiesta. È ansible controllare la risposta di json_decode per verificare se è riuscito come segue:

     $data = json_decode($json,true); if( $data === NULL) { exit( 'Could not decode JSON'); } 

    Infine, passando come il secondo parametro a json_encode significa che restituirà un arrays associativo, in modo da json_encode accedere agli elementi così:

     $name = $data['name']; $pos = $data['position']; 

    Assicurati di leggere i documenti per json_encode in modo da capire cosa sta facendo.

    Modifica: il problema è che stai accedendo al parametro $_POST da un nome errato. Dovresti usare:

     $json = $_POST['jsonpost']; 

    Poiché la seguente row denomina il parametro "jsonpost":

     httppost.getParams().setParameter("jsonpost",postjson); 

    Dal momento che non so come il client java invia la richiesta che vorrei provare:

     print_r($_SERVER); print_r($_GET); print_r($_POST); 

    Scoprire come funziona.

    provare queste righe:

     httppost.setHeader("Accept", "application/json"); httppost.setHeader("Content-type", "application/json"); 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.