IOS / PHP:写入服务器数据库后在应用程序中捕获成功消息
Posted
技术标签:
【中文标题】IOS / PHP:写入服务器数据库后在应用程序中捕获成功消息【英文标题】:IOS/PHP: Capture success message in app after writing to server database 【发布时间】:2015-11-01 14:14:24 【问题描述】:在我的应用程序在 mysql 数据库中插入一条记录后,我想捕获新记录的 ID 并将其发送回应用程序以进行同步。
问题是如何有效地捕获它并将其发送回应用程序。
这是发布到服务器的代码。
-(void) postToServer: (NSString *) jsonString
NSURL *url = [NSURL URLWithString:@"http://www.~.com/services/new.php"];
NSMutableURLRequest *rq = [NSMutableURLRequest requestWithURL:url];
[rq setHTTPMethod:@"POST"];
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
// NSData *jsonData = [@" \"item\": \"hat\" " dataUsingEncoding:NSUTF8StringEncoding];
[rq setHTTPBody:jsonData];
[rq setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[rq setValue:[NSString stringWithFormat:@"%ld", (long)[jsonData length]] forHTTPHeaderField:@"Content-Length"];
[NSURLConnection sendAsynchronousRequest:rq queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *rsp, NSData *data, NSError *err)
NSLog(@"POST sent!");
NSLog(@"Error%@",err);
];
这是我设置为回显插入 id 的 php。
$newid = mysql_insert_id();
echo $newid;
但是,我怎样才能让这个网络服务将信息发送回应用程序?
感谢您的任何建议。
【问题讨论】:
【参考方案1】:只需在您的 PHP 中回显 JSON 响应(错误/数据),然后您的 AsynchronousRequest 会将响应返回给您:
[NSURLConnection sendAsynchronousRequest:rq queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *rsp, NSData *data, NSError *err)
NSLog(@"POST sent!");
if (err)
NSLog(@"Error%@",err);
else
NSDictionary *jsonResults = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSLog(@"Results: %@", jsonResults);
// NSString *insertID = jsonResults[@"insert_id"];
];
PHP:
// Set the response type as JSON
header("Content-Type: application/json");
...
if ($sqlResult)
// Return your insertID here
$response = array("insert_id" => $sqlResult['insert_id']); // example
exitWithResponse($response);
else
exitWithHttpCode(400, "Bad Request"); // example
...
# Exit with response
function exitWithResponse($response)
$status = array('code' => '200', 'response' => $response, 'error' => NULL);
echo json_encode($status);
http_response_code(200);
exit();
# Exit with error code
function exitWithHttpCode($code, $error)
$status = array('code' => $code, 'response' => NULL, 'error' => $error);
echo json_encode($status);
http_response_code($code);
exit();
更多关于状态码:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
【讨论】:
jsonResults 正在注销 nil。我需要在服务器上对其进行 jsonencode 吗? 太棒了。那成功了。我猜这个函数只是使用完成块的响应? 是的,但最好向应用发送响应以处理数据或错误。以上是关于IOS / PHP:写入服务器数据库后在应用程序中捕获成功消息的主要内容,如果未能解决你的问题,请参考以下文章
使用 Elastic Beanstalk 部署后在容器中运行命令