2011-09-05 11 views
5

sto chiamando un servizio web come di seguito:Errore del parser Errore Domain = NSXMLParserErrorDomain Code = 4 "Impossibile completare l'operazione."

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

quando ho la risposta che mi dia seguente errore:

FATTO. Byte ricevuti: 422 mostra l'XML (null) parser error errore di dominio = Codice NSXMLParserErrorDomain = 4 "L'operazione non può essere completata (errore NSXMLParserErrorDomain 4.)."

Ho cercato un po 'sul Internet. Ma non è in grado di trovare nulla. Qualsiasi aiuto su questo per favore.

risposta

8

NSXMLParserErrorDomain error 4 significa che al parser XML è stato assegnato un documento vuoto. Questo mi suggerisce che l'input era nullo o che sei riuscito a cambiarlo prima che venga dato al parser.

Ho esaminato meglio il codice. Il problema non è che non stai ricevendo una risposta. È solo che non lo stai aspettando. La richiesta che hai inviato è asincrona, ma stai cercando di riempire la tua variabile webData immediatamente (cioè in modo sincrono).

+0

Questo significa che devo parlare con il ragazzo del servizio web per verificare la risposta che sta inviando? Anche lo stesso servizio web funziona in un'applicazione Android. – Rushi

+0

Ho aggiunto alla mia risposta, per favore fatemi sapere se questo era effettivamente il problema. –

+0

Ho rimosso le seguenti righe dal mio codice: if (conn) { webData = [[Dati NSMutableData] retain]; } ora Im riempimento variabile weData nella seguente funzione: - (void) Collegamento: (NSURLConnection *) Collegamento didReceiveData: (NSData *) Dati non c'è più dare errore NSXMLParserErrorDomain 4. Ma è dando seguente errore ora. Parser errore errore di dominio = Codice NSXMLParserErrorDomain = 5 "L'operazione non può essere completata (errore NSXMLParserErrorDomain 5)." Il servizio Web utilizzando PHP Im – Rushi

1

Un altro reson possibile potrebbe essere che non vi è alcun tag radice. esempio: i dati XML A come questo --->


2011-12-22

<days_remaining> 
      0 
</days_remaining> 
0

Prova questo codice sul tuo metodo di codifica

NSString *theXML = [[NSString alloc] initWithBytes: [_responseData mutableBytes] length:[_responseData length] encoding:NSUTF8StringEncoding]; 
Problemi correlati