我正在使用目标C而我正在尝试加载网站而不在Safari中打开它:
我正在使用以下功能:
NSString *website =[NSString stringWithFormat:@"http://www.website.com"];
NSString *connected = [NSString stringWithContentsOfURL:[NSURL URLWithString:website ]encoding:NSStringEncodingConversionAllowLossy error:nil];
但是当我在我的数据库中检查时,我注意到它没有加载网站,当我在浏览器中加载它确实检测到它时,有什么原因吗?
感谢
答案 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并设置请求的类型。