d.a*_*kiv 1 iphone objective-c iphone-sdk-3.0
我需要提交一个带有" +"符号的电子邮件地址,并在服务器上进行验证.但服务器接收" aaa+bbb@mail.com"为" aaa bbb@mail.com"的电子邮件.
我使用以下代码将所有数据作为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];
Run Code Online (Sandbox Code Playgroud)
编码前的post变量有值
&email=aaa+bbb@gmail.coma&userName=Asdfasdfadsfadsf&password=sdfasdf
Run Code Online (Sandbox Code Playgroud)
编码后它是一样的
&email=aaa+bbb@gmail.coma&userName=Asdfasdfadsfadsf&password=sdfasdf
Run Code Online (Sandbox Code Playgroud)
我用来发送请求的方法如下代码:
-(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;
}
Run Code Online (Sandbox Code Playgroud)
电子邮件,用户名和密码需要转义-stringByAddingPercentEscapesUsingEncoding:.
NSString *post = [NSString stringWithFormat:@"&email=%@&userName=%@&password=%@",
[user.email stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
...
Run Code Online (Sandbox Code Playgroud)
但是,这不会逃脱,+因为它是一个有效的URL字符.您可以使用更复杂的CFURLCreateStringByAddingPercentEscapes,或者为了简单起见,只需将以下内容替换+为%2B:
NSString *post = [NSString stringWithFormat:@"&email=%@&userName=%@&password=%@",
[[user.email stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]
stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"], ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
716 次 |
| 最近记录: |