百分比符号的密码总是错的iPhone

我正在用Xcode开发一个具有loginfunction的iPhone应用程序,并且遇到以下代码的问题:

NSString *post = [NSString stringWithFormat:@"username=%@&password=%@",[NSString stringWithFormat:@"%@",username],password]; NSLog(post); NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]]; NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding]; [request setHTTPMethod:@"POST"]; [request addValue:[NSString stringWithFormat:@"%@",username] forHTTPHeaderField:@"username"]; [request addValue:password forHTTPHeaderField:@"password"]; [request setHTTPBody:postData]; action = @"token"; NSURLConnection *connection; connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

现在有一个密码为%32dzs3 *的成员,并且该应用程序总是给出密码不正确的错误。 当我NSLog密码它确实不是我input的文本字段的密码。 它看起来像这样:50883393zs3 *。 我也试过这个:

 for(int i = 0; i < [password length];i++){ if([password characterAtIndex:i] == '%'){ NSString *temporarypw = [password substringWithRange:NSMakeRange(0, i)]; password = [NSString stringWithFormat:@"%@%%%%%@",temporarypw,[password substringWithRange:NSMakeRange((i+1), (password.length - i -1))]]; break; } } 

这将返回密码为%%%% 32dzs3 *和密码是正确的,当我NSLog它。 当我运行请求时,响应仍然是错误的密码响应。 我怎样才能解决这个问题?

%是HTTP URL中的特殊字符。 在创buildURL之前,您需要先将其转义 ,也可以: /# , ,和@ 。 幸运的是NSString有一个方法来做到这一点。

您可能需要正确地转义密码。 看到这个问题: NSString方法百分比转义“&”的URL