如何在 iOS 中发送带有特殊字符的 JSON 字符串?

Posted

技术标签:

【中文标题】如何在 iOS 中发送带有特殊字符的 JSON 字符串?【英文标题】:How to Send JSON String with Special Charaters in iOS? 【发布时间】:2015-06-25 18:23:31 【问题描述】:

我是 ios 新手,我正在使用以下代码进行 API 调用。

-(NSData *)sendDataToServer:(NSString*)url :(NSString*)params

    NSString *postDataString = [params stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    NSLog(@"postDataString   :%@",postDataString);

    NSData *postData = [postDataString dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

    NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    NSString *urlReq = [NSString stringWithFormat:@"%@", url];
    [request setURL:[NSURL URLWithString:urlReq]];
    [request setTimeoutInterval:180];
    [request setHTTPMethod:@"POST"];
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [request setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]];

    responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];



    NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

    NSLog(@"response in Server: %@",responseString);
    return responseData;


我将以下字符串作为参数发送到上述方法。如果我发送以下不带特殊字符的数据,我会收到成功响应。

如果我在 json 中添加任何特殊包,如 (&),我总是得到无效响应,即服务器总是返回 null。

所以任何人都可以提供任何建议,以便在使用带有特殊字符(如“&”等)的 json 字符串时获得正确的响应,

submited_data="safty_compliance_fields":["safty_compliance_id":"641","fieldName":"sc1","fieldType":"editText","fieldValue":"wedgies Ig","safty_compliance_id":"642","fieldName":"sc2","fieldType":"editText","fieldValue":"het &"],"status_id":"2","product_detail":["dynamic_fields_id":"639","fieldName":"p1","fieldType":"editText","fieldValue":"data1","dynamic_fields_id":"640","fieldName":"p2","fieldType":"editText","fieldValue":"data2"],"inspection_id":"3","second_level":["questions":["checkListValue":"NO","checkListCommentValue":"Jgkjgjkj","sub_category_id":"452","checkListName":"sl1","checkListValue":"YES","checkListCommentValue":"jk","sub_category_id":"453","checkListName":"sl2","checkListValue":"YES","checkListCommentValue":"gh","sub_category_id":"455","checkListName":"sl3","checkListValue":"YES","checkListCommentValue":"nm","sub_category_id":"456","checkListName":"sl4"],"title":"sl1","entity_second_level_entry_id":"130","questions":["checkListValue":"YES","checkListCommentValue":"Bonn","sub_category_id":"454","checkListName":"s22"],"title":"s211","entity_second_level_entry_id":"131"],"comment":"Jgkjgjkj","status":"Ongoing"

【问题讨论】:

【参考方案1】:

您发布的不是百分比编码字符串,而是原始字符串。

【讨论】:

以上是关于如何在 iOS 中发送带有特殊字符的 JSON 字符串?的主要内容,如果未能解决你的问题,请参考以下文章

PostMan发送请求参数带有路径特殊字符会返回400错误(与URL字符及URL编码值有关)

如何在iOS(目标c)中发送带有字典和数组的JSON?

如何在批处理文件中获取带有特殊字符的子字符串?

Xcode/ios 5 到 SJso 中的特殊字符

带有特殊字符的 XML 在 C# 中转换为 Json

iOS Json解析中特殊字符串('\\')处理