2016-04-11 63 views
1

在网上搜索了很多东西后,我没有得到任何适当的解决方案。 我正在从android应用程序发送JSON数据到一个在PHP开发的web服务。在php webservice中解析json请求

当我通过Advanced Rest Cient Appication测试webservice时,我得到了正确的答复,但是当我调用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); 



?> 

请给我建议我在做什么这里错了。 任何帮助将appriciated。 预先感谢您。

+0

在你的控制达至$ QRY =“编码SELECT?$ result = $ conn-> query($ qry);这行的输出是什么? –

回答

0

如果它适用于高级REST客户端应用程序,而不是您的Android应用程序,这是因为您没有正确解析您的属性。

我会说这是一些与此两条线

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

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

你是让你的“零响应”因为查询被严重从属性