2012-03-29 9 views
3

Ich versuche, JSON zu senden, um die Daten zu PHP und zu speichern, die geschickt, aber ich kann esJSON Senden an PHP Android mit

mein Android-Code

public void sendToServer(String txt) throws JSONException{ 

      String path = "http://10.0.0.6:8888/json.php"; 

      HttpClient client = new DefaultHttpClient(); 
      HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); // Timeout 
                        // Limit 
      HttpResponse response; 
      JSONObject json = new JSONObject(); 

      try { 
       HttpPost post = new HttpPost(path); 
       json.put("text", txt); 
       Log.i("jason Object", json.toString()); //This print the data perfectly 
       post.setHeader("json", json.toString()); 
       post.setHeader("Accept", "application/json"); 

       Log.i("Done", "DONE 1"); 

       StringEntity se = new StringEntity(json.toString()); 

       se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, 
         "application/json")); 
       Log.i("Done", "DONE 2"); 

       ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
       nameValuePairs.add(new BasicNameValuePair("myjson", json.toString())); 
       post.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 


       Log.i("Done", "DONE 3"); 

       response = client.execute(post); 

       /* Checking response */ 
       if (response != null) { 
        InputStream in = response.getEntity().getContent(); // Get the 
                     // data in 
                      // the 
                      // entity 
        String a = convertStreamToString(in); 
        Log.i("Read from Server", a); 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
        } 

und meine PHP-Code

arbeiten machen
<?php 

$decoded = json_decode(stripslashes($_POST['myjson'])); 
if($decoded) 
$con = mysql_connect('localhost','root','root') 
     or die('Cannot connect to the DB'); 
mysql_select_db('deaf',$con); 
mysql_query("INSERT INTO text 
VALUES ('".$decoded->{'text'}"')"); 
mysql_close($con); 
$posts = array(1); 
header('Content-type: application/json'); 
echo json_encode(array('posts'=>$posts)); 

else 
echo "error"; 
    ?> 

die Insert-Anweisung nicht funktioniert, verbrachte ich Stunden damit, es zu beheben, mir nichts funktionierte helfen bitte, dank

+0

Das PHP erschreckt mich. –

+0

@pst ich auch tatsächlich :) – Osaed

+0

Was bekommen Sie in Ihrer 'in'-Variable von Java? Ersetzen Sie Ihr Templating 'if' durch' if {} else {} '. Es funktioniert nur für 1 Zeile Code und Sie haben 10 Zeilen hier, wenn. Es würde nicht funktionieren. –

Antwort

0

Es gibt ein paar Probleme mit diesem.

  1. Sie scheinen nur json in beliebige Teile Ihres Codes (json Header, ein nie verwendetes StringEntity, die myjson URL-codierten Form Feld) zu stopfen. Ich würde empfehlen, einfach den Text der Anfrage zum JSON-Dokument zu machen. Es gibt jedoch andere Ansätze, also versuchen wir, die myjson funktioniert zu bekommen. Wenn Sie das tun, würde ich den Namen in etwas wie document ändern. Es muss nicht in der Kopfzeile sein, und Sie können StringEntity entfernen.
  2. Es gibt sehr wenige richtige Verwendungen für stripslashes. Sie sollten es nicht auf Formulareingabe ausführen müssen. Wenn Sie dies tun, kann das bedeuten, dass magic_quotes aktiviert ist. magic_quotes wurde aus PHP entfernt (5.4 und höher) und sollte niemals verwendet werden.
  3. Ich empfehle, dass Sie vorbereitete Anweisungen verwenden. Wenn nicht, sollten Sie mysql_real_escape_string verwenden. Andernfalls sind Sie anfällig für SQL-Injection.
  4. Sie können den Objektzugriff vereinfachen. So sollte der Code sein:  

    mysql_query("INSERT INTO text VALUES ('" . mysql_real_scape_string($decoded->text) . "')");

Wenn der Insert-Anweisung fehlschlägt, wenden Sie sich bitte nach, was die Fehler sind, einschließlich mysql_error.

+0

Danke für die Antwort, nur eine Frage, die myjson oder Dokument, wie das JSON-Objekt wird, wenn ich es benutze ?? – Osaed

+0

Ich sage sagen ersetzen "myjson" mit "Dokument" auf Client und Server. –

+0

Ich weiß, aber was der JSON aussehen wird {"text": "sometext"} wo ist das Dokument in diesem Objekt oder nur für die Behandlung? Sorry, aber ich bin wirklich neu in diesem :) – Osaed