发送电子邮件时遇到问题。如果消息只有一个单词,代码就可以正常工作。当我添加多个单词,即带有空格或符号时,它会出错“出现连接错误。请确保您已连接互联网并稍后再试”。
- (void)sendAction {
NSString *email = [self.emailTxt text];
NSString *message = [self.messageTxt text];
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@?email=%@&message=%@", kITSuggestionPage, email, message]];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
NSString *title = (!error)? @"Message Sent" : @"Error";
NSString *message = (!error)? @"Thank you for your Feedback, we hope it will help us to make this product even better." : @"There was an connection error. Please make sure you have internet connection and try again later.";
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:message delegate:nil cancelButtonTitle:@"Close" otherButtonTitles:nil, nil];
[alert show];
NSLog(@"Error: %@", error.localizedDescription);
}];
if (email && (email.length > 0)) {
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:email forKey:kITUserEmailKey];
[userDefaults synchronize];
}
}
答案 0 :(得分:2)
您必须网址转义您的message
参数(基本上会替换带有百分比编码的网址中不允许的某些字符,例如%20
表示空间)。
示例(假设您正在使用ARC):
NSString *message = [self.messageTxt text];
message = CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)message, NULL, CFSTR("!*'();:@&=+$,/?%#[]"), kCFStringEncodingUTF8));
NSURL *url = ...
答案 1 :(得分:0)
尝试在消息的空格位置添加%20。如果现在工作正常,则问题在于编码。在发送请求之前对您的URL进行编码。
NSString *urlString = [urlString stringByReplacingPercentEscapesUsingEncoding :NSASCIIStringEncoding];
这将对URL进行编码。