0

我正在生成一个由字符串参数给出的 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);

谢谢

4

3 回答 3

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:那里使用
于 2013-06-07T06:13:17.343 回答
1

使用以下代码。

NSString *sURL = @"ftp://www.jerox.com/Administrator:@123@TRDOP@%$/arrows.png";
NSURL *url = [[NSURL alloc] initWithString:[sURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSLog(@"URL :: %@",url);
于 2013-06-07T06:02:39.843 回答
0

从您发布的代码示例中,这是问题所在:

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

仔细查看权限组件(用户名、密码和主机)。URL 中使用@符号将用户名和密码与主机分开。因为您的密码包含一个@字符,所以它必须进行百分比转义。@is的百分比编码,%40而是为您提供代码:

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

你真的应该在那里转义其他特定于 URL 的字符,比如单独的%符号。

于 2013-07-24T09:28:34.380 回答