2010-12-04 13 views
6

Básicamente, estoy enviando una solicitud POST con un cuerpo de datos vacía:Cuerpo vacío en sus destinos en ASIHTTPRequest

ASIHTTPRequest *request [ASIHTTPRequest alloc] init]; 
    [request setURL:[NSURL URLWithString:escapedUrlString]]; 
    [request setRequestMethod:@"POST"]; 
    [request addRequestHeader:@"Content-Type" value:@"application/xml"]; 
    [request startSynchronous]; 

pero estoy recibiendo esta respuesta cada vez:

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

Me pregunto si es obligatorio establecer valores de publicación.

Respuesta

9

no tengo mucha experiencia con la envoltura ASIHTTPRequest pero puedo ver que está Inicialización con alloc:init, mientras que la mayoría de los ejemplos que he visto tienen una mayor comodidad initialiser requestWithURL:(NSURL*)url es decir

ASIHTTPRequest *request = [AIHTTPRequest requestWithURL:escapedUrlString]; 

En una estimación' d diga que este complemento de conveniencia también establecerá algunas de las variables necesarias para que funcione su solicitud de publicación, incluido NSStringEnconding.

De la documentación ASIHTTPRequest en http://allseeing-i.com/ASIHTTPRequest/How-to-use#handling_text_encodings

Manejo de codificaciones de texto

ASIHTTPRequest intentará leer la codificación de texto de los datos recibidos de la cabecera Content-Type. Si encuentra una codificación de texto, establecerá responseEncoding en el NSStringEncoding apropiado. Si no encuentra una codificación de texto en el encabezado, usará el valor de defaultResponseEncoding (esto predeterminado es a NSISOLatin1StringEncoding).

Cuando se llama [Solicitud responseString], ASIHTTPRequest se intento de crear una cadena partir de los datos que recibió, usando responseEncoding como la fuente codificación.

+0

Solo para confirmar después de revisar rápidamente el código, este es el caso. Compruebe el archivo de interfaz (ASIHTTPRequest.h) para obtener detalles sobre los métodos init/dealloc. – Rog

3

Como dice Rog, use initWithURL o requestWithURL. De todos modos, en mi caso, el problema era que me estaba conectando a un servidor lento y la solicitud agotó el tiempo dando el error "Valor NSStringEncoding incorrecto detectado 0x0000".

Lo resuelto con:

request.timeOutSeconds = 50; 

Usted puede tratar con más del 50 por segundo si el servidor es aún más lento.