2013-02-05 4 views
0

Чтобы получить JSON я использовал этот ответ SBJsonWriter Nested NSDictionaryURL для запроса GET

Теперь у меня есть жало {"key1":"bla1","key2":{"a":"a1","b":"b1","c":"c1","d":"d1"},"key3":"bla3"}, что я назвал theString , и мне нужно, чтобы добавить его в URL http://mysyte.net:8888/JSON? и получить что-то вроде это http://lcwebtest.sytes.net:8888/JSON?{"key1":"bla1","key2":{"a":"a1","b":"b1","c":"c1","d":"d1"},"key3":"bla3"}

Вот что я делаю: NSString *urlString = [NSString stringWithFormat:@"http://mysyte.net:8888/JSON?%@",theString];

NSLog дает http://mysyte.net:8888/JSON?{"key2":{"d":"d1","b":"b1","c":"c1","a":"a1"},"key1":"bla1","key3":"bla3"}

Затем я создаю URL-адрес от NSURL * url1 = [NSURL URLWithString: urlString];

НО NSLog(@"%@",url1); дает мне {null}

Я предполагаю, что NSURL не хочет читать «{» или «}» и считает, что URL-адрес был поврежден.

Как я могу получить URL-адрес, чтобы сделать запрос GET?

ответ

0

Я предполагаю, что NSURL не хочет читать «{» или «}» и считает, что URL-адрес был искажен.

Правильно, вам не разрешено помещать специальные символы в URL-адрес. Вы хотите избежать строки JSON следующим образом:

CFStringRef escaped = CFURLCreateStringByAddingPercentEscapes(
    NULL, 
    (CFStringRef)theString, // (__bridge CFStringRef)theString if you use ARC 
    CFSTR(""), 
    CFSTR("?&=%,:+-"), 
    kCFStringEncodingUTF8 
); 
NSString *urlString = [NSString stringWithFormat:@"http://mysyte.net:8888/JSON?%@", (NSString *)escaped]; 
CFRelease(escaped); 
+0

Большое спасибо! – AlexanderZ

Смежные вопросы