2016-04-11 6 views
0

Ich sende JSON-Objekt von meiner Android App auf meinen Server. In meiner lokalen Entwicklungsmaschine funktioniert es gut. Ich bekomme die Daten und entziffere sie. Aber wenn ich meinen Server zum Berechnen der Engine bereitgestellt habe, erhalte ich die Daten auf dem Serverende nicht. Die Daten werden vom Android-Client gesendet. Ich habe auch den JSON von meinem Browser getestet und bekomme 200 Antwortcode. Hier ist der Code-Schnipsel:JSON gesendet von Android zu berechnen Engine-Server gibt null

// Client

// erzeuge JSONObject hier Dies ist die JSON Ich sende { "test", "1234"}

JSONObject json = new JSONObject(); 
json.put("test", args[0]); 

String postData=json.toString(); 

// Send POST output. 
OutputStreamWriter os = new OutputStreamWriter(urlConn.getOutputStream(), "UTF-8"); 
os.write(postData); 
Log.e("NOTIFICATION", "Sent"); 
os.close(); 

BufferedReader reader = new BufferedReader(new InputStreamReader(urlConn.getInputStream())); 
String msg=""; 
String line = ""; 
while ((line = reader.readLine()) != null) { 
    msg += line; 
} 
Log.i("msg=",""+msg); 

// Server

<?php 

    $json = file_get_contents("php://input"); 
    var_dump($json); //this returns String(0) 
    $decoded = json_decode($json, TRUE); 
    $pasid = $decoded['test']; 

    echo"test if it works"; 
    var_dump($pasid); //returns null 

Egal was ich mache die Android App sendet eine Zeichenfolge, aber auf der Serverseite bekomme ich leere Zeichenfolge. Ich kann nicht herausfinden, warum bis jetzt.

+0

Was passiert, wenn Sie den' $ json' aussprechen? Ist es gebildet, wie Sie es erwarten? – Jon

+0

@Jon Danke, dass du mich daran erinnerst. Ich habe meine Frage jetzt aktualisiert. Das gibt String (0) zurück. Ich erwarte einen alfanumerischen Wert, den ich von Android gesendet habe. –

Antwort

0

Stellt sich heraus, dass das Problem von HttpRLConnection verursacht wird. Genau wie the accepted answer in this SO question, einfach entfernen `

urlConnection.setChunkedStreamingMode (0);

wobei `urlConnection = HttpUrlCooenction();

`

1

nach Senden Post-Anforderung an dem Server können Sie Post Körper mit diesem Codes erhalten:

<?php 

    $post_body = file_get_contents("php://input"); 
    $json = json_decode($post_body); 
    $pasid = $json->{"test"}; 

    echo $pasid; 
?> 
+0

Sie müssen ein Echo mit var_dump ($ pasid); und du gibst null zurück, genau wie meiner. –

2

Code ist sehr verwirrend das ist nicht gut Weg, um Daten von App Remote-Datenbank zu senden Sie tun können, wie diese `

Form die App

String uri="But your http URL"; 
URL url = new URL(uri); 
     HttpURLConnection con = (HttpURLConnection) url.openConnection(); 
     con.setRequestMethod("POST"); 
      con.setDoOutput(true); 
      OutputStreamWriter writer=new  OutputStreamWriter(con.getOutputStream()); 
StringBuilder sb=new StringBuilder(); 
sb.append("username="+"Naham"); 
sb.append("password="+"passNaham"); 
      writer.write(sb.toString()); 
      writer.flush(); 

Kennen Sie den einfachen pHP-Web-Service

 

    $data = array("result" => 0, "message" => "Error!"); 
    if ($_SERVER['REQUEST_METHOD'] == "POST") { 
       $user_name = isset($_POST['username']) ? $_POST['user_name'] : ""; 
       $user_password = isset($_POST['user_password']) ?  $_POST['user_password'] : ""; 

       // do some thing here 
    $data = array("result" => 1, "message" => "welcome"); 
    } else 
     $data = array("result" => 0, "message" => "Error!"); 
    /* Output header */ 
    header('Content-type: application/json'); 
    echo json_encode($data); 
    ?> 


+0

muss der Benutzername nicht mit user_name übereinstimmen? Warum Benutzername? Sollte es Benutzername sein? –

+0

Ich habe die Zeichenfolge (0) auf der Serverseite empfangen, aber nicht NULL, die ich mit meinem Code verwendet habe. –

+0

ja du hast recht vermisst das ich das bearbeiten werde danke –

Verwandte Themen