0

I am sending JSON object from my Android app to my server. In my development local machine it works fine. I get the data and decode it. But when I deployed my server to compute engine, I don't receive the data on the server end. The data is sent from the Android client. I also tested the JSON from my browser and I get 200 response code. Here are the code snippets:

//Client

//Create JSONObject here This is the JSON I am sending {"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

No matter what I do the Android app sends a string but on the server side I am getting empty string. I can't figure out why so far.

The_Martian
  • 3,684
  • 5
  • 33
  • 61
  • What happens if you echo out the `$json`? Is it formed how you expect it? – Jon Apr 11 '16 at 20:10
  • @Jon thanks for reminding me that. I have updated my question now. That returns String(0). I am expecting alfanumeric value that I sent from Android. – The_Martian Apr 11 '16 at 20:19

3 Answers3

2

your code is very confusing this is not good way to send data from app to remote database you can do like this `

form the 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();

Know the simple 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);
    ?>


1

after send post request to server you can get post body with these codes:

<?php

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

  echo $pasid;
?>
Edalat Feizi
  • 1,371
  • 20
  • 32
0

Turns out the issue is caused by of HttpRLConnection. Just like the accepted answer in this SO question, just remove `

urlConnection.setChunkedStreamingMode(0);

where `urlConnection = HttpUrlCooenction();

`

Community
  • 1
  • 1
The_Martian
  • 3,684
  • 5
  • 33
  • 61