【发布时间】:2015-05-28 23:47:15
【问题描述】:
我的应用调用 Web 服务进行登录。通常该服务可以正常工作,但是当我的密码带有特殊字符(例如:!*'\"();:@&=+$,/?%#[]%)时,Web 服务器不会'不允许我登录,因为在服务器端我收到的密码没有特殊字符,例如:
在我的应用上插入密码:test+test
密码接收到网络服务器:testtest
正如您看到的删除特殊字符的请求,实际上我正在使用以下代码发送登录凭据:
- (id)sendRequestToURL:(NSString *)url withMethod:(NSString *)method withUsername:(NSString*)username withPassword:(NSString*)password andInstallationId:(NSString*)installationId {
NSURL *finalURL = [[NSURL alloc]init];
if ([method isEqualToString:@"POST"]) {
finalURL = [NSURL URLWithString:url];
} else {
NSLog(@"Metodo no previsto");
}
NSString *post = [NSString stringWithFormat:@"username=%@&password=%@&installationId=%@", username, password, installationId];
NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding];
NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)postData.length];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]init];
[request setURL:finalURL];
[request setHTTPMethod:method];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];
if (connection) {
[connection start];
}
return connection;
}
我该如何解决这个问题?我看了NSString class reference,看到有- stringByAddingPercentEncodingWithAllowedCharacters:不删除特殊字符的方法,有人知道这个方法怎么用吗?可以给我一个代码 sn-p 吗?
谢谢
【问题讨论】:
-
我认为这个问题已经得到解答。你可以使用这个链接stackoverflow.com/questions/3423545/…
标签: ios objective-c