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];
}
necesita poner el código en la publicación, donde se origina la llamada. – MCannon
Algún código nos ayudará a entender qué pasa con sus llamadas –