为什么[NSURL URLWithString:string]为nil ?

网络请求的基本套路:

1、NSString *string = @”http://www.yusian.com/blog”;
2、NSURL *url = [NSURL URLWithString:string];
3、NSURLRequest *request = [NSURLRequest requestWithURL:url];
4、[self.webView loadRequest:request];

然而有时候页面却没有任何内容,何解?通过段点才发现url为nil,为毛?!
这个时候可以试下将第一步的string进行encoding一下,即:
string = [string stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
或许就可以了哦,试试吧!

最好是写一个NSString的分类,提供一个转换方法,方便使用
– (NSString *)encodingString
{
return [self stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}
这样一来,第二步可以直接改为
2、NSURL *url = [NSURL URLWithString:[string encodingString]];

有时候重复encoding也会造成url为空哦,所以还有一个方法,即在第二步进行判断,如果url==nil再encoding
if (nil == url) url = [NSURL URLWithString:[string encodingString]];

Leave a Reply