2011-09-05 19 views
5

Estoy llamando a un servicio web de la siguiente manera:Error del analizador Error Domain = NSXMLParserErrorDomain Code = 4 "La operación no se pudo completar."

-(void)verifyEmailAndPasswordWebservices 
{  
NSString *MD5Password = [ self MD5]; 
NSLog(@"text field password %@",txt_Password.text); 
NSLog(@"converted password %@",MD5Password);  

NSString *soapMsg =[NSString stringWithFormat: 
        @"<?xml version=\"1.0\" encoding=\"utf-8\"?>" 
        "<SOAP-ENV:Envelope SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:tns=\"http://php:8393/includes/webservice\">" 
        "<SOAP-ENV:Body>" 
        "<ns1:LoginUserRequest xmlns:ns1=\"http://schemas.xmlsoap.org/soap/envelope/\">"       
        "<email xsi:type=\"xsd:string\">%@</email>" 
        "<pass xsi:type=\"xsd:string\">%@</pass>"     
        "</ns1:LoginUserRequest>" 
        "</SOAP-ENV:Body>" 
        "</SOAP-ENV:Envelope>",txt_EmailOrMobile.text,MD5Password]; 



//---print it to the Debugger Console for verification--- 
NSLog(@"soapMsg..........%@",soapMsg); 

NSURL *url = [NSURL URLWithString:@"http://10.0.0.115:8393/includes/webservice/login1.php"]; 
req = [NSMutableURLRequest requestWithURL:url]; 

//---set the headers--- 

NSString *msgLength = [NSString stringWithFormat:@"%d",[soapMsg length]]; 
[req addValue:@"application/soap+xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
[req addValue:@"http://10.0.0.115/includes/webservice/login1.php/LoginUser" forHTTPHeaderField:@"SoapAction"]; 
[req addValue:msgLength forHTTPHeaderField:@"Content-Length"]; 

//---set the HTTP method and body--- 

[req setHTTPMethod:@"POST"]; 
[req setHTTPBody: [soapMsg dataUsingEncoding:NSUTF8StringEncoding]]; 

// [activityIndicator startAnimating]; 

conn = [[NSURLConnection alloc] initWithRequest:req delegate:self]; 
if (conn) 
{ 
    webData = [[NSMutableData data] retain]; 
} 
} 

Cuando tengan la respuesta que me da el error siguiente:

HECHO. Bytes recibidos: 422 muestra el XML (nulo) de error del analizador de error de dominio = Código NSXMLParserErrorDomain = 4 "La operación no pudo completarse (error NSXMLParserErrorDomain 4.)."

He buscado un poco en el Internet. Pero no puede encontrar nada. Cualquier ayuda en esto, por favor.

Respuesta

8

NSXMLParserErrorDomain error 4 significa que el analizador XML recibió un documento vacío. Eso me sugiere que la entrada fue nula o que ha logrado cambiarla antes de que se le haya dado al analizador.

Eché un vistazo mejor a su código. El problema no es que no estés recibiendo una respuesta. Es solo que no estás esperando por eso. La solicitud que ha enviado es asíncrona, pero está intentando completar su variable webData de inmediato (es decir, sincrónicamente).

+0

hace esto ¿Quiero decir que tengo que hablar con el técnico del servicio web para verificar la respuesta que está enviando? También el mismo servicio web está funcionando en la aplicación de Android. – Rushi

+0

He agregado mi respuesta, por favor avíseme si ese fue realmente el problema. –

+0

He eliminado las siguientes líneas de mi código: if (conn) { webData = [[NSMutableData data] retain]; } Ahora estoy llenando variables weData en función siguiente: - (void) Conexión: (NSURLConnection *) Conexión didReceiveData: (NSData *) Datos no es más dando NSXMLParserErrorDomain de error 4. Pero se está dando siguiente error ahora. Analizador de error error de dominio = Código NSXMLParserErrorDomain = 5 "La operación no pudo completarse (NSXMLParserErrorDomain error 5.)." Im servicio web utilizando PHP – Rushi

1

Otro posible resonancia podría ser que no hay una etiqueta raíz. ejemplo: datos de un xml como este --->


2011-12-22

<days_remaining> 
      0 
</days_remaining> 
0

Prueba este código en su método de codificación

NSString *theXML = [[NSString alloc] initWithBytes: [_responseData mutableBytes] length:[_responseData length] encoding:NSUTF8StringEncoding]; 
Cuestiones relacionadas