0

我很抱歉提出一个新问题,我不得不这样做 - 因为我以未注册用户的身份从我的 iPhone 上写了另一个问题,而且从 iPhone 上写起来不太舒服。

改写问题:

是否可以使用:

[NSMutableArray writeToURL:(NSString *)path atomically:(BOOL)AuxSomething];

为了将文件 (NSMutableArray) XML 文件发送到 url,并更新 url 以包含该文件?

例如:我有一个数组,我想将它上传到一个特定的 URL,下次启动应用程序时我想下载该数组。

NSMutableArray *arrayToWrite = [[NSMutableArray alloc] initWithObjects:@"One",@"Two",nil];

[arrayToWrite writeToURL:

[NSURL urlWithString:@"mywebsite.atwebpages.com/myArray.plist"] 原子:YES];

在运行时:

NSMutableArray *arrayToRead =

[[NSMutableArray alloc] initWithContentsOfURL:[NSURL urlWithString:@"mywebsite.atwebpages.com/myArray.plist"]];

意思是,我想将一个 NSMutableArray 写入一个 URL,该 URL 位于 Web 托管服务
(例如 batcave.net)上,该 URL 接收信息并相应地更新服务器端文件。像设置这样的高分,用户发送他的分数,服务器更新它的文件,其他用户在运行时下载高分。

我希望这一点得到澄清。

编辑:我正在寻找的是编写 PHP 或 ASP 脚本,以便网站、数据发送到的 URL 知道如何处理它。如果可以在网络托管服务上执行此操作,我想要一个示例或教程,说明如何实现此脚本以处理数据。

〜提前谢谢。

4

2 回答 2

2

要回答“如何创建类似系统的高分?”这个问题,系统有多个部分:

  • 您需要为每个用户提供一个 ID(在 iPhone 上生成的 GUID 以及用户名就足够了)。
  • 您需要一台服务器: 记住高分;从用户那里获得高分;要么显示(在网站上)高分和/或使高分可下载到手机。
  • 您需要一些欺诈保护,尽管这可能会与越狱者打一场失败的战斗。

在 iPhone 应用程序端,您可能希望能够下载当前的高分以进行显示,这很容易通过以下方式完成:

int statusCode = 0;
NSData* result = nil;
NSHTTPURLResponse* response = nil;
NSError* error = nil;
NSString* url = @"http://www.yourserver.com/highscores.php"; // returns XML plist data
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:180];
result = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
//  NSLog( @"NSURLConnection result %d %@ %@", [response statusCode], [request description], [error description] );
statusCode = [response statusCode];
if ( (statusCode == 0) || (!result && statusCode == 200) ) {
    statusCode = 500;
}

由于它是同步的,您可能希望将其放在 NSOperation 中。或者,您可以使用

+ (NSURLConnection *)connectionWithRequest:(NSURLRequest *)request delegate:(id)delegate

要发送高分数据,因为它非常小,最简单的方法就是在 URL 中对其进行编码。

NSString* url = [NSString stringWithFormat:@"http://www.yourserver.com/sethighscores.php?uid=%@;name=%@;score=%d;antifraud=%@", [uid encodeParameter], [name encodeParameter], score, [secureHash encodeParameter]];

其中 encodeParameter 是 NSString 上的一个自定义类别,它对 URL 参数进行编码,secureHash 是一个字符串,表示您的 iPhone 应用程序和您的网站已知的 uid、名称、分数和一些秘密的单向安全散列。您需要自己解决这些问题或提出单独的问题,因为这已经很长了。

于 2009-06-24T01:28:06.657 回答
0

根据 NSData writeToURL 文档(至少对于 iPhone OS 2.2.1):

“由于目前只支持file://url,所以这个方法和writeToFile:atomically:没有区别,除了第一个参数的类型。”

尽管 NSArray/NSDictionary/NSString 的文档没有具体提及限制,但似乎很可能适用相同的限制。

因此,您必须使用其他机制上传 XML。

此外,网站通常是只读的,除非您在 Web 服务器上提供特定代码以支持上传。

于 2009-06-21T09:35:22.027 回答