目标C,打开网站而不在Safari中打开它(用于服务器呼叫)

时间:2012-03-15 19:02:51

标签: objective-c web-services xcode4.2

我正在使用目标C而我正在尝试加载网站而不在Safari中打开它:

我正在使用以下功能:

 NSString *website =[NSString stringWithFormat:@"http://www.website.com"];

 NSString *connected = [NSString stringWithContentsOfURL:[NSURL URLWithString:website ]encoding:NSStringEncodingConversionAllowLossy error:nil];

但是当我在我的数据库中检查时,我注意到它没有加载网站,当我在浏览器中加载它确实检测到它时,有什么原因吗?

感谢

2 个答案:

答案 0 :(得分:0)

Vlad是对的,但您的代码也只会加载一个文件。当您在Safari等浏览器中打开该文件时,浏览器将递归加载所有引用的文件,并将处理存在的任何重定向。

更新

在浏览器中,使用不带文件名的URL。我不确定你能用stringWithContentsOfURL:或NSURLConnection做到这一点。

如果文件名类似于“index.html”或类似名称,请尝试将其添加到您的网址中。这些方法加载文件,所以我打赌你需要提供一个完全定义的URL,包括文件名。

答案 1 :(得分:0)

您可能希望使用NSURLConnection类从网络中检索数据。它将提供更有用的错误集等。

对于简单(但阻塞),您可以从-sendSynchronousRequest:returningResponse:error:开始,它从网络中检索URL,为您提供数据(在返回值中),HTTP响应和错误。

NSURL *url = [NSURL URLWithString: @"http://www.website.com"];
NSURLRequest *request = [NSURLRequest requestWithURL: url];
NSURLResponse *response;
NSError *error;
NSData *data = [NSURLConnection sendSynchronousRequest: request returningResponse: &response error: &error];

如果数据不是nil,则表示您获得了有效的响应,否则错误包含有关响应的信息。您仍然需要仔细检查response以确保获得所需内容(而不是由于服务器发回HTTP错误代码而导致错误的“成功”响应)。

将来,如果您需要执行POST命令,可以使用NSMutableURLRequest并设置请求的类型。