Ошибка кодировки URL iOS NSURL

URL, который открывается в Firefox, браузерах Chrome на рабочем столе, не открывается в WebView на iPhone. Этот URL предположительно обращается к GET-запросу. При создании NSURL без процентирования url не генерируется. При использовании процентной надписью URL-адрес перенаправляется на содержимое с плохой ссылкой.

Есть ли другая кодировка, используемая в настольных браузерах, а не на iPhone? или мобильный сафари? Существуют ли другие способы кодирования URL в iOS, кроме использования

-stringByAddingPercentEscapesUsingEncoding
-CFURLCreateStringByAddingPercentEscapes

который генерирует неверные страницы содержимого запроса с сервера.

Любая помощь будет очень полезна, спасибо.

РЕДАКТИРОВАТЬ:
URL был создан как показано ниже

http://something.test.com/iostest/index.html?{"a":"b"}

Удалось понять, что не кодировка фигурных скобок вызывает проблему в iOS. как в

NSString *tempUrlSting = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)tempURLA,CFSTR("{}"), CFSTR("\""), CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding)));
NSURL *tempUrl=[NSURL URLWithString:tempUrlSting];
Если не кодировать фигурные скобки в URL, а кодировать остальные, используя [ответ Роба] [1], как указано выше. При создании NSURL, URL-адрес пуст.При кодировании фигурных скобок URL генерируется нормально, но сервер выдает исключение.

этоВопрос предлагает использовать CFNetworking.

РЕДАКТИРОВАТЬ
Используется CFNetworking, как показано ниже

-(void)getDataFromUrl{
    CFStringRef tempURLA = CFSTR("http://my.test.server/iostest/index.html?{\"a\":\"b\"}");
    CFStringRef tempUrlSting = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)tempURLA,CFSTR("{}"), CFSTR("\""), CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));

    CFURLRef myURL = CFURLCreateWithString(kCFAllocatorDefault, tempUrlSting, NULL);

    CFStringRef requestMethod = CFSTR("GET");
    CFHTTPMessageRef myRequest = CFHTTPMessageCreateRequest(kCFAllocatorDefault, requestMethod, myURL,kCFHTTPVersion1_1);

    CFStringRef headerFieldName = CFSTR("Accept");
    CFStringRef headerFieldValue = CFSTR("text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
    CFHTTPMessageSetHeaderFieldValue(myRequest, headerFieldName, headerFieldValue);


    [self performHTTPRequest:myRequest];

}

-(void)performHTTPRequest:(CFHTTPMessageRef)request {
    CFURLRef gotdatab = (__bridge CFURLRef)(CFBridgingRelease(CFHTTPMessageCopyRequestURL(request)));
//    NSLog(@"(CFHTTPMessageRef request  %@",gotdatab);

    CFReadStreamRef requestStream = CFReadStreamCreateForHTTPRequest(NULL, request);

    CFReadStreamOpen(requestStream);

    NSMutableData *responseBytes = [NSMutableData data];
    NSError *error;

    while (TRUE) {

        if (CFReadStreamHasBytesAvailable(requestStream)) {
            UInt8 streambuffer[1024];
            int readBytes = CFReadStreamRead (requestStream,streambuffer,sizeof(streambuffer));
            NSLog(@"Read: %d",readBytes);
            [responseBytes appendBytes:streambuffer length:readBytes];
        }

        if (CFReadStreamGetStatus(requestStream) == kCFStreamStatusError) {

            error = (NSError*)CFBridgingRelease(CFReadStreamCopyError (requestStream));
            if ([error code] == 61) {
                // connection refused
                NSLog(@"Error occured: %d",[error code]);
            }
            break;
        }
        if (CFReadStreamGetStatus(requestStream) == kCFStreamStatusAtEnd) {
            NSLog(@"Stream reached end!");
            error = nil;
            break;
        }

    }//
    CFHTTPMessageRef response = (CFHTTPMessageRef)CFReadStreamCopyProperty(requestStream, kCFStreamPropertyHTTPResponseHeader);

    if (response==NULL) {
        NSLog(@"response is null");
        return;
    }
}

Выше было сделано с использованием примеров изВот а такжеВот

Выше метод все еще имеет ту же проблему. То есть: если {} не закодировано, URL не генерируется. Если {} закодированы, сервер не возвращает правильное значение.

Какие-либо предложения, пожалуйста?

Ответы на вопрос(2)

Ваш ответ на вопрос