How to Send JSON String with Special Charaters in iOS?

时间:2015-06-25 18:23:31

标签: ios iphone rest ios7 nsurlconnection

I'm new to iOS and i'm using the following code to make API Calls.

-(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;

}

I'm sending the following string as params to the above method. If I send the following data without special characters, I'm getting the success response.

If i Add any special charters as like (&) with json I'm always getting the invalid response, that is the server always returns null.

So Can anyone please provide any suggestion to get the right response when using json string with Special characters like '&' etc.,

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 个答案:

答案 0 :(得分:0)

You didn't post the percent encoded string, but the original string.