android和RESTful Web服务实现

时间:2015-04-10 04:26:16

标签: java php android json rest

我开发了一个Android应用程序和相关的Web服务。此Web服务仅从我的应用程序访问。它不公开。我已阅读REST标准,并了解各种Http方法GET,POST,PUT等。对于我的应用程序,我只使用POST

在我的PHP代码中我处理请求并发送响应消息。如果有人询问它是否符合REST标准?我不知道该说些什么。 我的代码有问题吗?附件是我的PHP和Android代码。 在这里,我正在更新一个人从移动设备到Web服务器的地址。截至目前,代码工作正常。

- PHP

<?php 
$username=$_POST["username"]; 
$gyshadd=$_POST["address"];
$gyshphone=$_POST["phone"];

$connect = mysql_connect("127.0.0.1","melon","my password") or die("jothi can't' connect");
mysql_select_db("taxidata") or die("no database");

if (!empty($_POST)) 
{ 
  //check username already exists
  $query = mysql_query("SELECT * FROM drivertable WHERE userid = '$username'"); 
  $numrows = mysql_num_rows($query);

  if($numrows == 0 )
  { 
    $response["success"] = 0; 
    $response["message"] = "username doesn't'exists"; 
    die(json_encode($response)); 
  } 
  else
  { 
    //create new account
    $query = mysql_query("UPDATE drivertable SET dadd='$gyshadd', mobile='$gyshphone' WHERE userid='$username'");
    $response["success"] = 1; 
    $response["message"] = "Address update success"; 
    die(json_encode($response)); 
  } 

} 
else
{ 
  $response["success"] = 0; 
  $response["message"] = " One or both of the fields are empty "; 
  die(json_encode($response)); 
} 
mysql_close();

?>

从异步任务执行的android代码

  private static final String ADDRESS_URL = "http://www.xyz123.com/test/updateaddress.php";



List<NameValuePair> params = new ArrayList<NameValuePair>(3);
                params.add(new BasicNameValuePair("username", username));
                params.add(new BasicNameValuePair("address", daddress));
                params.add(new BasicNameValuePair("phone", phone));

 HttpClient httpclient = new DefaultHttpClient();
 HttpPost httppost = new HttpPost(ADDRESS_URL);
 httppost.setEntity(new UrlEncodedFormEntity(params));
 HttpResponse response = httpclient.execute(httppost);
 String json = EntityUtils.toString(response.getEntity());
 JSONObject myObject = new JSONObject(json);

--------

2 个答案:

答案 0 :(得分:0)

至少对于您提供的示例,可以将其视为RESTful。话虽如此,除非您没有进行任何数据检索(GET)或资源创建(PUT),否则在您的应用中只使用POST会很奇怪。

另请注意,REST不是&#34;标准&#34;但更多的是一种风格/最佳实践/模式(见Wikipedia entry),所以如果符合你的需要,一些偏差就可以了。

最后,如果应用程序执行了大量的Web服务,最好使用REST library删除大部分苦差事。

答案 1 :(得分:0)

虽然我可以理解您可能希望获得代码的反馈。我不确定我是否应该回答或评论,因为这最终会成为自以为是的

无论如何,有两个问题

  1. SQL injection,而不是直接将变量放入SQL字符串。尝试使用具有预备语句的PDO之类的内容
  2. 您的POST更像是一个表单POST,可以说不是REST。尝试通过请求有效负载发送POST。详细了解差异here