如何在用户名中发送NSURL请求containsig @

时间:2012-01-27 10:09:21

标签: ios nsurlconnection nsurl nsurlrequest

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

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

上面的代码是从网站exam.com而不是example.com

获取数据

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

我尝试使用\之类的转义序列来转义@字符,但仍无效。

2 个答案:

答案 0 :(得分:2)

在从他们制作NSURL之前始终对您的参数进行编码

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

答案 1 :(得分:0)

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

NSString * encodedString = [q stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];

NSURL *requestURL = [NSURL URLWithString:encodedString];