【发布时间】:2012-05-26 05:49:35
【问题描述】:
有趣的编程难题...
我未能将错误初始化为零,所以下面的代码崩溃了。
NSString *query = [NSString stringWithFormat:@"http://mysite.com/getlatest.php?a=%@", aSuiteName];
NSURL *url = [NSURL URLWithString:query];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLCacheStorageNotAllowed timeoutInterval:10];
[request setHTTPMethod:@"GET"];
NSURLResponse *response = nil;
NSError *error;
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
if ( !data || error != nil ) {
NSLog(@"Error downlading %@", error); //CRASH
return NO;
}
我的问题是,我怎样才能让我的服务器返回一个错误,使 sendSynchronousRequest:returningResponse:error: 实际上收到一个错误,但仍然继续下载数据?某种非致命错误会导致错误被初始化为 NSError 对象?
这与一个类似的难题有关,我之前希望返回状态信息而不会完全失败。所以,虽然晦涩难懂,但我很想知道是否有这种技术。
虽然这是一个 Cocoa 问题,但我认为答案将在 php.ini 中。类似的东西
<?php
header( set 503 error here );
return data;
?>
【问题讨论】:
-
每个 HTTP 响应都有一个状态码——因此该协议当然支持发送 503 和响应数据。 (我正在将它与我正在开发的 Cocoa 应用程序一起使用。)您是否需要知道如何使用 NSURLRequest 来处理它,或者如何使用 PHP 来生成它?
-
我回复了下面的Cocoa部分。
-
我需要知道如何处理 php(或其他一些服务器设置,我不确定它是在 php 代码中还是在控制面板中)。我现在看到 php 是要走的路,设置一个 header()。
标签: php cocoa nsurlconnection nsurl