读书人

创造您自己的i??OS应用程序的Web服务

发布时间: 2013-11-21 23:38:25 作者: rapoo

创建您自己的i??OS应用程序的Web服务,第一部分

我们有一个名为iglobe localhost上有两个表:用户和标签的数据库。?用户表(?图B)包含主键与一个用户名,一个密码,密码提示,第一个和最后一个名称,以及电子邮件,电话号码,地址,且该等定期的东西。

图B

创造您自己的i??OS应用程序的Web服务,第一部分

标签表(?图C)也有自己的主键(TAGID),相应的用户名,一个标识符,标签的经度和纬度,创建日期,它的价值,用户多少分。?还有一个国家的领域,这是实施后,随着项目的进展(它已经在2011年以来的作品)。

图C

创造您自己的i??OS应用程序的Web服务,第一部分

第2步:创建Web服务后端

我们的Web服务的想法是从这些表中读取和写入他们的任何数据用户请求或交他们。?这部分需要你知道的一些?PHP?。?让我们开始寻找什么样的代码来读取一个表看起来像。

<?phpinclude_once("JSON.php");$json = new Services_JSON();$link = mysql_pconnect("localhost", "user", "pass") or die("Could not connect");mysql_select_db("iglobe") or die("Could not select database");$arr = array();$rs = mysql_query("SELECT * FROM users");while($obj = mysql_fetch_object($rs)) {$arr[] = $obj;}Echo $json->encode($arr);?>

首先,我们包括json.php的文件,以访问您的服务器上的JSON文件(请确保您的网络服务器或主机,为您提供至少PHP 5.2)。?然后,我们做一个连接到数据库,使用数据库的用户名和密码,以及数据库主机。?现在,我们创建一个数组对象,所以一旦我们执行的mysql_query从用户表中的所有条目被收集到$ RS,我们可以把该对象到我们到达[]对象。?最后,我们到$ json的编码$ ARR和回声它搬上了银幕。

一旦这个代码,并准备连同你的数据库(包括一些记录),您的浏览器可以直接到该文件(我把它叫做myserver.com / getusers.php的)。?我得到了以下的结果:

[{"id":"35","username":"zlitsami ","password":"932d1c42a4e4880e57037994fd3584b1","password_hint":"","lastname":"","firstname":"","email":"joe@iglobe.com","phone":"","address1":"","address2":"","city":"","state":"","zip":"","country":"","url":"","permissions":"1","udid":"9","userCreated":"2013-01-01 14:27:22","time_queued":null,"time_sent":null}, {another}, {another}]

这是一个有很多元素的数组。?每个元素是用户的表项。?每个条目是一个键值对的字典。?眼熟吗?

现在我们知道了如何从我们的数据库中读取信息,让创建的代码写入到数据库。

<?php$con = mysql_connect("localhost","user","pass");if (!$con)  {  die('Could not connect: ' . mysql_error());  }mysql_select_db("iglobe", $con);$sql="INSERT INTO  tags (username, latitude, longitude, country,destintyudid,points) VALUES ('$_POST[sender]','$_POST[latitude]','$_POST[longitude]','$_POST[country]','$_POST[receiver]','$_POST[points]')";if (!mysql_query($sql,$con))  {  die('Error: ' . mysql_error());  }echo "1 record added to tags";mysql_close($con)?>

我们再次连接到我们的数据库,我们创建了一个SQL语句插入值(这些值来自于一种形式,是在网上或移动设备上的)。?我们执行该SQL语句与我们联系,并验证用户呼应的结果。?我打电话给此文件writephp.php的。

之前,我们移动到iOS上,让的网上测试我们的服务。?创建一个HTML文件称为Writeform.html,这段代码保存:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head></head><body><form action="writephp.php" method="post">  <table style="text-align: left; width: 100%;" border="0" cellpadding="2" cellspacing="2">    <tbody>      <tr>        <td>Name:</td>        <td><input name="sender" type="text"></td>        <td></td>      </tr>      <tr>        <td>UDID(unnecessary):</td>        <td><input name="udid" type="text"></td>        <td></td>      </tr>      <tr>        <td>Latitude:</td>        <td><input name="latitude" type="text"></td>        <td></td>      </tr>      <tr>        <td>Longitude:</td>        <td><input name="longitude" type="text"></td>        <td></td>      </tr>      <tr>        <td>Country</td>        <td><input name="country" type="text"></td>        <td></td>      </tr>      <tr>        <td>Receiver</td>        <td><input name="receiver" type="text"></td>        <td></td>      </tr>      <tr>        <td></td>        <td></td>        <td><input type="submit"></td>      </tr>    </tbody>  </table>    <br></form></body></html>

现在,您的网页浏览器上加载的形式和提交数据到你的数据库。

我不想让此Web服务太复杂了,因为我想保持你的注意力在iOS端,让我们创建一个表单,最终从我们的服务针对特定用户读取点。?创建另一个HTML文件称为Testform.html,这段代码保存:

<HTML><head><form action="readpoints.php" method="post">User: <input type="text" name="userNa"/><input type="submit" /></form></head></HTML>并创建PHP对口:
<?phpinclude_once("JSON.php");$json = new Services_JSON();$link = mysql_pconnect("localhost", "user", "pass") or die("Could not connect");mysql_select_db("iglobe") or die("Could not select database");$username = $_POST["userNa"];$result = mysql_query("SELECT username, SUM(points) AS PUNTOS FROM tags WHERE username='$username' GROUP BY username");// THIS RETURNS ARRAY NOT READ PROPERLY BY iOS JSON$resultado = array();while($obj = mysql_fetch_object($result)) {$resultado[] = $obj;}Echo $json->encode($resultado);?>

一旦我们得到更多的数据到数据库中,我们将使用此代码后的最后一位。

到目前为止,我们有一个资源,返回一个特定的用户,readpoints.php点,这是什么所谓的Web服务端点。?可以有很多的Web服务端点。?我们可能要在游戏或应用程序,一旦得到了很多用户的点,以填补一个领导委员会,例如。?从发票数据库,而不是一个接一个,我们可能想获取很多交易。?因此,让我们自己和创建端点管理一组输入数据。?在我们的例子中,我们必须能够通过Web服务的一组用户。?我们的文件看起来像这样:

<?phpinclude_once("JSON.php");$json = new Services_JSON();//1. PROCESS RECEIVED ARRAY$handle = fopen("php://input", "rb");$http_raw_post_data = '';while (!feof($handle)) {    $http_raw_post_data .= fread($handle, 8192);}fclose($handle);//1.1 Just decode to see what kind of object it is$post_data = json_decode($http_raw_post_data,true);if (is_array($post_data))    $response = array("status" => "ok", "code" => 0, "original request" => $post_data);else    $response = array("status" => "error", "code" => -1, "original_request" => $post_data);//2. CALL DB QUERY$link = mysql_pconnect("localhost", "username", "password") or die("Could not connect");mysql_select_db("iglobe") or die("Could not select database");//3. CREATE FINAL ARRAY TO RETURN$arrayToReturn = array();//4. CYCLE THROUGH USERSforeach ($post_data as $value) {  //CREATE QUERY  $result = mysql_query("SELECT username, SUM(points) AS PUNTOS FROM tags WHERE username='$value' GROUP BY username");  //EXECUTE QUERY & ADD EACH USER/POINTS DICTIONARY TO $resultado ARRAY  $resultado = array();  while($obj = mysql_fetch_object($result)){$arrayToReturn[] = $obj;  }}Echo $json->encode($arrayToReturn);?>

这个基本的PHP代码,需要传递的,正如我们前面提到的数组,遍历数据库,为每个用户获得积分。?这是很重要的,因为我们的应用程序保存到Web服务器的数据库中有很多车次。

步骤3:创建的的iOS前端(故事板)

现在,我们要对我们的iOS故事板或前端工作。?然后,我们将硬编码数据,并获取从实际的后端网络,这样,我们就可以看到我们的前端将需要在数据模型,然后我们就可以获取网络数据并更换我们的数据,这些数据模型。?我们也将学习两种方式获取数据:直列,凌乱的代码和整洁的编码。

遵循以下步骤:

?

  1. 创建一个新的空项目使用故事板,ARC,iPhone,没有核心数据。
  2. 进入到情节提要,并拖动到网格的UITableViewController。
  3. 创建一个类UsersListViewController。?故事情节,选择现场,在Identity督察使我们的场景UsersListViewController类型从下拉列表中。
  4. 运行一个快速的测试,以确保我们的TVC工作。
  5. 构建与运行。?你应该得到一个空的tableview。

?

让我们回顾一下在本节中,我们将做什么:

?

读书人网 >操作系统

热点推荐