我有一个存储在表中的图像数据库,其中包含“ImageName”、“ImageCaption”和“EventName”等列。
我想做一个查询并获取具有特定“EventName”的所有图像 - 由用户选择 - 如下所示:
$EventName = $_POST['EventName'];
$query = "SELECT * from ImageGalleryTable WHERE EventName = '". $EventName . "'";
棘手的部分是这个用户选择不是来自 HTML 表单,而是来自iPhone 应用程序。这是我的 Objective-C 代码:
NSString *myRequestString = [NSString stringWithFormat:@"EventName=%@", eventUserChose];
NSData *myRequestData = [NSData dataWithBytes:[myRequestString UTF8String] length:[myRequestString length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString: @"http://mydomain.com/GetGalleryImages.php"]];
[request setHTTPMethod: @"POST"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
[request setHTTPBody: myRequestData];
NSURLResponse *response;
NSError *err;
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];
NSString *content = [NSString stringWithUTF8String:[returnData bytes]];
NSLog(@"responseData: %@", content);
所有这些都有效:我通过它返回的数据responseData
很好——它是由我调用的 PHP 脚本生成的 XML,那里的一切都很干净。来自应用程序的 POST 也有效 - 所以一切都很好。
所以我的问题是:我该如何解析这个傻瓜?
我已经使用 NSXMLParser 完成了大量的解析(是的,我知道它不是最好的解析器 - 请不要在这里进行讨论:-)) - 但我解析的所有 XML 通常都是从服务器准备好的 - 它不依赖于任何 POSTed 值,如果你明白我的意思的话。通常我会这样解析:
NSURL *url = [NSURL URLWithString:@"http://mydomain.com/makeMyXML.php"];
parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[parser setDelegate:self];
[parser parse];
然后我就跑了。但是在这里我必须同时发布一些东西——我认为我只能用我在上面包含的代码来做NSURLConnection
——然后我还必须解析它——我通常用我包含的 NSXMLParser 代码来做——但它们似乎有冲突。我的意思是他们都启动了一个请求过程,不是吗?
那么我到底应该怎么做呢?正确的方法是什么?