从用户获取输入文本并使用 iPhone SDK 将其保存在网络服务器上
Posted
技术标签:
【中文标题】从用户获取输入文本并使用 iPhone SDK 将其保存在网络服务器上【英文标题】:Get input text from user and save it on webserver using iPhone SDK 【发布时间】:2010-11-25 11:11:19 【问题描述】:有没有办法在 iPhone 应用程序中捕获输入文本并将该文本发送到网络服务器?
我们怎样才能做到这一点?
基本上我想通过让用户在应用内注册时事通讯来获取用户的电子邮件地址。
谢谢!
【问题讨论】:
【参考方案1】:创建一个简单的 Web 服务,它接受您需要传递的参数并将它们添加到数据库中。这是一个使用 php 将用户名和密码保存到 mysql 数据库的简单示例。在它下方,您将找到如何使用 POST 请求从应用程序内发送它:
<?
// check if email and password are not blank
if(trim($_POST['email']) != '' && trim($_POST['password']) != '')
$emailQuery = strtolower(mysql_real_escape_string($_POST['email']));
$passwordQuery = md5($_POST['password']);
$host = 'localhost';
$dbuser = 'username';
$dbpassword = 'password';
$dbname = 'databasename';
/* connect to the db */
$link = mysql_connect($host,$dbuser,$dbpassword) or die ('Cannot connect to the DB');
mysql_select_db($dbname,$link) or die('Cannot select the DB');
/* insert the data into the db */
$query = "INSERT INTO members VALUES ('','$emailQuery','$passwordQuery')";
mysql_query($query) or die('Errant query: '.$query);
echo "Database updated";
@mysql_close($link);
else echo "Mandatory parameters missing";
?>
然后,您可以从您的应用程序中使用 NSURLConnection 发送发布请求。为了简单起见,我使用同步请求,但建议您查看 NSURLConnection 的文档以及如何实现异步请求并通过委托方法读取响应:
// login and password are both UITextField instances
NSString *myRequestString = [NSString stringWithFormat:@"email=%@&password=%@",self.login.text, self.password.text];
NSData *myRequestData = [NSData dataWithBytes:[myRequestString UTF8String] length:[myRequestString length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://domain.com/webservice.php"]];
[request setHTTPMethod: @"POST"];
[request setHTTPBody: myRequestData];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
// To see what the response from your server is, NSLog returnString to the console or use it whichever way you want it.
NSLog (@"%@", returnString);
我希望它有所帮助。 罗格
【讨论】:
【参考方案2】:应用指南 17.2 规定,要求提供用户个人信息(例如电子邮件和生日)的应用将被拒绝。
【讨论】:
您的报价不准确,这是 Apple 必须说的:“需要用户共享个人信息(例如电子邮件地址和出生日期)才能运行的应用程序将被拒绝”。关键字是“为了功能”。【参考方案3】:最简单的方法(但就像 Eimantas 说它会被拒绝)是对您的网络服务器上的 php 文件执行 http get 请求,例如 *url = www.example.com/myiphonescript.php?q=%@,搜索词。 searchTerm 是您的文本字段输入。然后将 php 脚本中的这个值保存到数据库或任何你想用它做的事情!
【讨论】:
以上是关于从用户获取输入文本并使用 iPhone SDK 将其保存在网络服务器上的主要内容,如果未能解决你的问题,请参考以下文章
iPhone SDK:如何创建一个在您点击的地方插入文本的 UITextView?
使用 HTML5/jQuery 从 iPhone 获取用户编号
iPhone SDK:如何在警报中获取 UITextField 的值?