我正在尝试将字符串发送到服务器。我编码并使用
将其设置为HTTP请求的主体[request setHTTPBody:[body dataUsingEncoding:NSUTF8StringEncoding]];
body是字符串。它必须是json格式。
例如
body = [NSString stringWithFormat:@"{\"emailBody\":\"%@\"}",string] ;
应该有效
但我接受来自用户的字符串,它可能包含双引号。因此我必须在其中转义双引号(“)。 例如,如果只想发送一个“
{\"emailBody\":\"\\\"\"}
(harddcoded)从服务器返回肯定响应。
所以我想从原始字符串创建这样一个字符串。我尝试了以下
string = [string stringByReplacingOccurencesOfString:@"\"" withString:@"\\\\\""];
但它没有用。我在我的测试邮件中得到了“。就我能够得到的而言。”
我采取了正确的方法吗?如果有人能指出我正确的方向,我将不胜感激。谢谢
答案 0 :(得分:2)
您应该直接从字典中生成JSON。这将自动为您处理所有编码:
NSDictionary *body = @{@"emailBody": string};
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:body options:0 error:&error];
if (!jsonData) {
NSLog(@"Got an error: %@", error);
} else {
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
[request setHTTPBody:jsonString];
}