Я использую NSMutableURLRequest для отправки (синхронного) запроса POST в веб-службу. Тело запроса содержит комбинацию XML и JSON. Что-то типа :
<element>
<element 2>
<![CDATA[
{"jsondata1":{"datafield1":"data1"},
"jsondata2":"some data"
}
]]>
</element 2>
</element>
строка JSON экранирована (с использованием escape()
в Javascript)
Когда я получаю запрос на другом конце, я замечаю, что все экранированные символы не экранированы!!
Кто-нибудь может сказать мне, почему это происходит? И как я могу предотвратить это?
Вот код, который я использую для отправки запроса:
NSURL *url = [NSURL URLWithString:@"https://my-webservice.com/something.do"];
NSData *xmlResponseDataSave;
NSMutableURLRequest *req = [[NSMutableURLRequest alloc] initWithURL:url];
NSString *msgLength = [NSString stringWithFormat:@"%d",[xmlRequestString length]];
[req addValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[req addValue:msgLength forHTTPHeaderField:@"Content-Length"];
[req setHTTPMethod:@"POST"];
NSData *saveData=[xmlRequestString dataUsingEncoding:NSUTF8StringEncoding];
[req setHTTPBody:saveData];
NSError *error=nil;
NSURLResponse *resp=[[NSURLResponse alloc] init];
xmlResponseData=[NSURLConnection sendSynchronousRequest:req returningResponse:&resp error:&error];
NSString *xmlResponseString=[[NSString alloc] initWithData:xmlResponseData encoding:NSUTF8StringEncoding];
Обратите внимание: я не могу внести какие-либо изменения в xml или веб-службу. Я могу изменить только объектный код c.
CDATA
? - person trojanfoe   schedule 04.03.2013