NSURL对象值为null

时间:2013-06-07 05:58:51

标签: ios url

我正在生成一个由字符串参数给出的URL,但是url给出了null值。 为了生成URL,我实现了以下代码。

 NSURL *url = [[NSURL alloc] init];
 NSString *strURL = @"ftp://Administrat:ABC(R%-@TRDOP@xx.xx.xx.xx/arrows.png";
 url = [NSURL URLWithString:[NSString stringWithString:strURL]];
 NSLog(@"URL :: %@",url);

由于

3 个答案:

答案 0 :(得分:2)

您需要转义url查询字符串中的特殊字符。

使用:

NSString *strURL = @"ftp://www.jerox.com/Administrator:@123@TRDOP@%$/arrows.png";
strURL =[strURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:strURL];
NSLog(@"URL :: %@",url);

另外,我需要在代码中提到一些错误:

  • 无需分配和初始化NSURL对象,因为您再次为该指针指定另一个对象
  • 无需使用stringWithString:

答案 1 :(得分:1)

使用以下代码。

NSString *sURL = @"ftp://www.jerox.com/Administrator:@123@TRDOP@%$/arrows.png";
NSURL *url = [[NSURL alloc] initWithString:[sURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSLog(@"URL :: %@",url);

答案 2 :(得分:0)

从您发布的代码示例中,问题出在此处:

 NSString *strURL = @"ftp://Administrat:ABC(R%-@TRDOP@xx.xx.xx.xx/arrows.png";

仔细查看权限组件(用户名,密码和主机)。在网址中使用@符号来分隔用户名和&来自主机的密码。由于您的密码包含@字符,因此必须对其进行百分比转义。 @的编码百分比为%40,代替代码:

 NSString *strURL = @"ftp://Administrat:ABC(R%-%40TRDOP@xx.xx.xx.xx/arrows.png";

你真的应该在其中转发其他特定于网址的字符,例如单独的%符号。