2010-11-30 13 views
5

Estoy utilizando ASIHttpRequest library en iphone y cuando intento hacer una solicitud GET en la URL siguiente recibo este mensaje y la solicitud falla, por favor cualquier persona si ha encontrado este problema o conoce un posible solución, por favor avíseme. En segundo lugar, si pego el enlace en el navegador funciona perfectamente bien.Valor de NSStringEncoding incorrecto 0x0000 detectado

[URL]

http://www.rugsale.com/iphone/app/?type=product_list&params=id%3D334&ver=1.0&key=kaoud

[ERROR]

valor 0x0000 NSStringEncoding incorrecta detectada. Asumiendo NSStringEncodingASCII. Detiene este comportamiento de mapeo de compatibilidad en el futuro cercano.

Thx de antemano

Saludos

Syed Arsalan Pervez www.saplogix.net

+2

necesita poner el código en la publicación, donde se origina la llamada. – MCannon

+0

Algún código nos ayudará a entender qué pasa con sus llamadas –

Respuesta

-1

El error es que va a crear una cadena. No proporciona una codificación que se requiere.

+0

Sí, lo sé, pero el problema es que estoy obteniendo datos xml del servidor del enlace que mencioné en mi pregunta, la solicitud asincrónica está fallando debido a ese mensaje de error, ahora No entiendo cuando llamadas similares con el mismo esquema exacto para los datos que estoy buscando funcionan a la perfección y esta única solicitud a esta url en particular está fallando. –

0

Esto parece algo surgido en el SDK 4.2. No vi esto hasta que actualicé mi entorno de desarrollo yo mismo.

All-Seeing Interactive probablemente tendrá que actualizar el código para garantizar la compatibilidad.

5

Esto ocurre especialmente si llama al [asiHttpRequest getResponseString] antes de que se haya devuelto una respuesta válida y se haya establecido la codificación de la solicitud (es decir, no se pudo conectar con el servidor).

La forma más fácil de solucionar esta advertencia es mediante la edición de la clase ASIHTTPRequest, retire la @synthesize responseEncoding y la adición de un simple captador de encargo/definidor para que pueda volver la codificación predeterminada si la codificación de respuesta no se establece:

- (NSStringEncoding) responseEncoding 
{ 
    return responseEncoding || self.defaultResponseEncoding; 
} 

- (void) setResponseEncoding:(NSStringEncoding)_responseEncoding 
{ 
    responseEncoding = _responseEncoding; 
} 

también hay una solución más específica para el método getResponseString, que creo que es el único lugar que utiliza la codificación sin comprobar si un valor - ya que la codificación debe establecerse para cualquier respuesta que no sea cero longitud:

- (NSString *)responseString 
{ 
    NSData *data = [self responseData]; 
    if (!data) { 
     return nil; 
    } 
    // --- INSERT THIS BLOCK --- 
    // If the 'data' is present but empty, return a simple empty string 
    if (data.length == 0) { 
     return @""; 
    } 
    //assert(self.responseEncoding); // if you're into runtime asserts, uncomment this 
    // --- END OF BLOCK TO INSERT --- 
    return [[[NSString alloc] initWithBytes:[data bytes] length:[data length] encoding:[self responseEncoding]] autorelease]; 
} 
+0

Esto fue aceptado como una resolución para http://stackoverflow.com/q/7238432/918764 – rvalue

+1

'self.responseEncoding = _responseEncoding; '- sigh ... infinite loop –

+1

' self.responseEncoding = ... 'usa el setter de la propiedad,' responseEncoding = ... 'solo establece el valor del ivar. – rvalue

1

esto solo dice que la codificación era nula, cuando se esperaba un valor. Intente hacer una búsqueda de "codificación: nada" o "codificación: NULO" en su código fuente y reemplácela con una codificación válida, por ejemplo NSStringEncodingASCII ...

3

Para mí, el problema era que el tiempo de espera no era suficiente. Entonces devuelve una respuesta vacía. Entonces da este error porque estás tratando de hacer algo con una respuesta vacía. Aumenté el tiempo para eso. Entonces resolvió mi problema. [request setTimeOutSeconds:200];

+0

Para mí también el mismo problema, gracias Solucionó mi problema. No he declarado la solicitud de tiempo de espera correctamente. –

Cuestiones relacionadas