NSMutableURLRequest删除" +"请求签名

时间:2015-07-30 13:13:50

标签: ios xcode

我正在开发一款需要在服务器上发送电话号码的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];

任何帮助将不胜感激。

2 个答案:

答案 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:@""];

这是伪代码,但你明白了。执行此操作后,您可以执行序列化,它应该没问题。