2012-03-15 58 views
1

我用客观的C和我试图加载网页没有在Safari中打开它:目标C,打开网站后,没有在Safari中打开它(服务器呼叫目的)

我使用以下功能:

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

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

,但是当我在我的数据库中,我注意到,它不会加载该网站查询,当我加载它在浏览器中它确实寿检测到它,任何原因?

谢谢

+0

NSString * website = [NSString stringWithFormat:“http://www.website.com”];你忘了添加“@”NSString * website = [NSString stringWithFormat:@“http://www.website.com”]; – Nirma 2012-03-15 19:23:49

+0

编辑我的问题,仍然是相同的问题:S – user1051935 2012-03-15 19:27:22

回答

0

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

对于简单(但阻塞),您可以从-sendSynchronousRequest:returningResponse:error:开始,它从网络中检索一个网址,为您提供数据(在返回值中), 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]; 

如果数据不是零,则您已获得有效响应,否则错误将包含有关响应的信息。您仍然需要仔细检查response以确保获得了您想要的内容(不是由于服务器为HTTP发回错误代码而导致错误的“成功”响应)。在未来,如果你需要做一个POST命令,你可以使用NSMutableURLRequest并设置请求的类型。

+0

谢谢你的帖子:我遇到了以下问题: 运行所有此代码后,我注意到:答案是零,错误有一个值,数据为零,任何原因? – user1051935 2012-03-15 19:26:00

+0

错误响应将包含有关错误的详细信息。先检查一下。 NSLog(@“%@”,错误)是一个好的开始。 – gaige 2012-03-15 22:08:22

0

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

UPDATE

在浏览器中使用URL没有文件名的作品。我不确定你可以用stringWithContentsOfURL来做到这一点:或者使用NSURLConnection。

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

+0

我可能没有正确表达我自己,我不想在Safari中打开它 – user1051935 2012-03-15 19:14:03

+0

那么你想要做什么?加载一个文件,或者递归加载所有这些文件?你是否尝试过Vlad的建议? – Jim 2012-03-15 19:14:52

+0

我想加载一个网站而不用在Safari中打开它。是的,我跟着弗拉德的建议 – user1051935 2012-03-15 19:17:22