用“+”号登录电子邮件地址
问题描述:
我需要提交一个带有“+
”标志的电子邮件地址并在服务器上进行验证。但服务器收到的电子邮件如“[email protected]
”为“aaa [email protected]
”。用“+”号登录电子邮件地址
我发送所有数据作为POST请求与下面的代码编码之前
NSURL* url = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@", url, @"/signUp"]];
NSString *post = [NSString stringWithFormat:@"&email=%@&userName=%@&password=%@",
user.email,
user.userName,
user.password];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:NO];
NSData* data = [self sendRequest:url postData:postData];
交可变编码它是相同
&[email protected]&userName=Asdfasdfadsfadsf&password=sdfasdf
方法I使用后具有值
&[email protected]&userName=Asdfasdfadsfadsf&password=sdfasdf
发送请求看起来像下面的代码:
-(id) sendRequest:(NSURL*) url postData:(NSData*)postData {
// Create request
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];
[request setURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Current-Type"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:postData];
NSURLResponse *urlResponse;
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:nil];
[request release];
return data;
}
答
+
正在被HTTP服务器作为空间转义。
您需要通过调用CFURLCreateStringByAddingPercentEscapes
答
您需要进行urlencode的加号,以躲避+
为%2B
。它必须变成%2B
让接收者认为它是一个加号。
答
电子邮件,用户名和密码需要-stringByAddingPercentEscapesUsingEncoding:
转义。
NSString *post = [NSString stringWithFormat:@"&email=%@&userName=%@&password=%@",
[user.email stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
...
但是,这不会逃过+
,因为它是一个有效的URL字符。您可以使用更sophiscated CFURLCreateStringByAddingPercentEscapes
,或简单,只需更换所有+
通过%2B
:
NSString *post = [NSString stringWithFormat:@"&email=%@&userName=%@&password=%@",
[[user.email stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]
stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"], ...
我不是100%肯定,但你可能要考虑的NSString的'stringByAddingPercentEscapesUsingEncoding:'@格雷格 – greg 2010-03-24 16:05:08
:哇,这是一个方法名称。 – Gumbo 2010-03-24 16:07:07