【问题标题】:How to send NSURL request containig @ in the username如何在用户名中发送包含 @ 的 NSURL 请求
【发布时间】:2012-02-20 08:19:26
【问题描述】:

如何发送在用户名中包含 @ 字符的 url 请求?
目前我的 url 请求代码如下所示:

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://user@exam.com:pwd@example.com"]];

上面的代码是从站点exam.com而不是example.com获取数据

如何使用 user@exam.com 作为用户名和 pwd 作为密码从 example.com 获取数据?

我尝试了像\ 这样的转义序列来转义@ 字符,但它仍然不起作用。

【问题讨论】:

  • 您是否尝试将第一个 @ url 编码为 %40?

标签: ios nsurlconnection nsurl nsurlrequest


【解决方案1】:

在从参数创建 NSURL 之前始终对参数进行编码

 NSString * encodedUsername = (NSString *)CFURLCreateStringByAddingPercentEscapes(
    NULL,
    (CFStringRef)unencodedUsername,
    NULL,
    (CFStringRef)@"!*'();:@&=+$,/?%#[]",
    kCFStringEncodingUTF8 );

【讨论】:

    【解决方案2】:

    您可以在使用它之前对字符串进行编码以生成如下所示的 url:

    NSString * encodedString = [q stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
    
    NSURL *requestURL = [NSURL URLWithString:encodedString];
    

    【讨论】:

      猜你喜欢
      • 2018-02-02
      • 1970-01-01
      • 2018-04-24
      • 1970-01-01
      • 2019-12-06
      • 2021-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多