Error de codificación de URL NSURL de iOS

La URL que se abre en Firefox, los navegadores Chrome en el escritorio, no se abre en WebView en iPhone. Esta URL supuestamente está accediendo a una solicitud GET. Al crear el NSURL sin el porcentaje de escape, no se genera la URL. Cuando se utiliza percentescape, la url redirige a un contenido de url incorrecto.

¿Se usa una codificación diferente en los navegadores de escritorio y no en el iPhone? o Safari móvil? ¿Existen diferentes formas de codificar la URL en iOS que no sea usar

-stringByAddingPercentEscapesUsingEncoding
-CFURLCreateStringByAddingPercentEscapes

que genera páginas de contenido de solicitud incorrecta desde el servidor.

Cualquier ayuda sería realmente genial, gracias.

EDITAR:
La URL generada es la siguiente

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

Se las arregló para darse cuenta de que no codificar las llaves está causando el problema en iOS. como en

NSString *tempUrlSting = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)tempURLA,CFSTR("{}"), CFSTR("\""), CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding)));
NSURL *tempUrl=[NSURL URLWithString:tempUrlSting];
Si no codifica las llaves en la URL, sino que codifica el resto usando [Respuesta de Rob] [1] como se indica arriba. Al crear NSURL, la url está vacía.Si codifica las llaves, la URL se genera bien, pero el servidor arroja una excepción.

EstaPregunta sugiere utilizar CFNetworking.

EDITAR
Usó CFNetworking como se muestra a continuación

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

Lo anterior se realizó utilizando ejemplos deaquí yaquí

El método anterior todavía tiene el mismo problema. Es decir: si {} no están codificados, la URL no se genera. Si los {} están codificados, el servidor no devuelve un valor adecuado.

¿Alguna sugerencia por favor?

Respuestas a la pregunta(2)

Su respuesta a la pregunta