在将NSString设置为NSURL时,NSURL返回nil值

时间:2014-08-18 11:40:59

标签: ios nsstring nsurl

我必须解析JSON API的返回,我已经将URL作为一个字符串,然后我将它传递给NSURL,但是在NSLog中它显示为nil。 这是我的代码,

NSString *urlstring=[NSString stringWithFormat:@"http://api.v3.factual.com/t/places?q=%@&geo={\"$circle\":{\"$center\":[19.9909631,73.8034808],\"$meters\":40000}}&limit=20&KEY=123456",[self.strurl lowercaseString]];
NSURL *url=[[NSURL alloc]initWithString:urlstring ];
NSURLRequest *req = [NSURLRequest requestWithURL:url];

提前致谢。

2 个答案:

答案 0 :(得分:1)

您必须对您的网址进行编码,因为它包含特殊字符,请尝试使用此类

NSString *paramString=[NSString stringWithFormat:@"/t/places?q=%@&geo={\"$circle\":{\"$center\":[19.9909631,73.8034808],\"$meters\":40000}}&limit=20&KEY=123456",[self.strurl lowercaseString]];

NSString *encodedSearchString = [paramString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSString *urlString = [NSString stringWithFormat:@"http://api.v3.factual.com%@", encodedSearchString];
NSURL *url = [NSURL URLWithString:urlString];
NSLog(@"urlstring is %@",url)

希望这有帮助

答案 1 :(得分:0)

试试,测试和工作

-(void) sample
{
   // NSString *strurl = @"hello";
    NSString *urlstring=[NSString stringWithFormat:@"http://api.v3.factual.com/t/places?q=%@&geo={\"$circle\":{\"$center\":[19.9909631,73.8034808],\"$meters\":40000}}&limit=20&KEY=123456",[strurl lowercaseString]];
    NSURL *url=[NSURL URLWithString:[urlstring stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    NSURLRequest *req = [NSURLRequest requestWithURL:url];
    NSLog(@"%@",req);
}