解析php-webservice中的json请求


parse json request in php webservice

在互联网上搜索了很多之后,我没有找到任何合适的解决方案。我正在将JSON数据从android应用程序发送到php中开发的Web服务。

当我通过Advanced Rest Cient Appication测试Web服务时,我得到了正确的响应,但当我调用api时,它会给我null响应。

这是我将数据发送到服务器的android代码:

 JSONObject obj = new JSONObject();
          try {
           obj.put("name", email_string);
           obj.put("email", password_string);
          } catch (JSONException e) {
           e.printStackTrace();
          }
          try {
               HttpPost httppost = new HttpPost(url.toString());
               httppost.setHeader("Content-type", "application/json");
               StringEntity se = new StringEntity(obj.toString());
               se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
               httppost.setEntity(se);
               HttpResponse response = httpclient.execute(httppost);
               Content = EntityUtils.toString(response.getEntity());
               Log.e("TAG", "response: " + response);
          }
          catch(Exception e)
          {
              //Toast.makeText(getApplicationContext(), "Something went wrong please try again later", Toast.LENGTH_LONG).show();
          }

下面是我的php Web服务代码:

<?php
error_reporting(1);
 $conn = new mysqli('localhost', 'xxxxx', 'xxxx', 'xxxx');
 // Get data
$data = json_decode("php://input",true);
print_r( $data);
 $handle = fopen("php://input", "rb");
 $raw_post_data = '';
while (!feof($handle)) {
    $raw_post_data .= fread($handle, 8192);
}
fclose($handle); 
$data = json_encode($raw_post_data);
$data = json_decode( $data);
$data = (array) $data;
$myarray = split("&", $data[0]);
 $myarray2 = split("=", $myarray[0]);
  $myarray3 = split("=", $myarray[1]);
  if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
  } 
  $qry = "SELECT emp_id, name, domain_name FROM Itl_login WHERE domain_name = '".urldecode($myarray2[1])."' and password='".urldecode($myarray3[1])."'";
 //echo $qry;
 $result = $conn->query($qry);

while($row = $result->fetch_assoc()) {
    $json = array("status" => 1, "name" => $row["name"], "domain_name"=> $row["domain_name"], "emp_ID" => $row["emp_id"]);
}
 /* Output header */
 header('Content-type: application/json');
 echo json_encode($json);

?>

请告诉我我在这里做错了什么。任何帮助都会得到通知。提前谢谢。

如果它适用于Advanced REST Client应用程序,而不适用于您的Android应用程序,那是因为您没有正确解析属性。

我想这是两条线的问题

$myarray2 = split("=", $myarray[0]);
$myarray3 = split("=", $myarray[1]);

由于属性

对查询的编码不正确,您将得到"空响应"