我正在开发一款需要在服务器上发送电话号码的iOS应用。 当我没有" +"它工作正常,但当我用#34; +"签署(+123456,+ 234567)然后发送号码(" 123456"," 234567")。
取代" +" by" " (空间)。 我将NSDictionary转换为JsonData。
NSError *err;
NSData *data=[NSJSONSerialization dataWithJSONObject:mdict options:0 error:&err];
NSString *str=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
NSString *strjson=[NSString stringWithFormat:@"GetData=%@",str];
NSLog(@"strjson=%@",strjson);
构建NSMutableRequest对象的代码。
NSURL *url = [NSURL URLWithString:urlString];
__weak NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[soadMessage length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:[soadMessage dataUsingEncoding:NSUTF8StringEncoding]];
[request addValue: @"application/x-www-form-urlencoded; charset=utf-8" forHTTPHeaderField: @"Content-Type"];
_connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];
[_connection start];
任何帮助将不胜感激。
答案 0 :(得分:1)
尝试使用CFURLCreateStringByAddingPercentEscapes
+ (NSString *)escapeValueForURLParameter:(NSString *)valueToEscape {
if (![valueToEscape isKindOfClass:[NSString class]]) {
valueToEscape = [(id)valueToEscape stringValue];
}
return (__bridge_transfer NSString *) CFURLCreateStringByAddingPercentEscapes(NULL, (__bridge CFStringRef) valueToEscape,
NULL, (CFStringRef) @"!*'();:@&=+$,/?%#[]", kCFStringEncodingUTF8);
}
答案 1 :(得分:0)
您需要格式化mdict
的值以取出+
字符。或者你也可以从最后的JSON中修剪它。无论哪种方式,您都将获得所需的结果。
这样的事情:
mdict["Phone"].value = [mdict["Phone"].value stringByReplacingOccurrencesOfString:@"+"
withString:@""];
这是伪代码,但你明白了。执行此操作后,您可以执行序列化,它应该没问题。