2011-09-05 8 views
5

Wołam usługę internetową, jak poniżej:Błąd analizatora błędów Domena = NSXMLParserErrorDomain Code = 4 "Operacja nie mogła zostać zakończona."

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

kiedy dostaję odpowiedź, że daje mi następujący błąd:

zrobić. Odebrane bajty: 422 pokazuje XML (null) Parser error Domain = kod NSXMLParserErrorDomain = 4 "Operacja nie mogła zostać zakończona (błąd NSXMLParserErrorDomain 4.)."

Rozglądałem się trochę po Internet. Ale nie jest w stanie niczego znaleźć. Proszę o pomoc.

Odpowiedz

8

NSXMLParserErrorDomain error 4 oznacza, że ​​analizator składni XML otrzymał pusty dokument. Sugeruje mi to, że dane wejściowe były zerowe lub udało się je zmienić, zanim zostaną podane do analizatora składni.

Miałem lepsze spojrzenie na twój kod. Problem nie polega na tym, że nie otrzymujesz odpowiedzi. Po prostu nie czekasz na to. Wysłane żądanie jest asynchroniczne, ale próbujesz natychmiast wypełnić swoją zmienną webData (tj. Synchronicznie).

+0

Czy ten co oznacza, że ​​muszę porozmawiać z gościem usługi sieciowej, aby sprawdzić odpowiedź, którą wysyła? Również ta sama usługa sieciowa działa w aplikacji na Androida. – Rushi

+0

Dodałem do mojej odpowiedzi, proszę dać mi znać, czy to był rzeczywiście problem. –

+0

Usunąłem następujące linie z mojego kodu: if (conn) { webData = [[dane NSMutableData] zachowaj]; } teraz im wypełnianie zmiennej weData w następujących funkcji: - (void) gra: (NSURLConnection *) połączenie didReceiveData: (NSData *) Dane to nie więcej dając błąd NSXMLParserErrorDomain 4. Ale to daje następujący błąd teraz. Parser error Domain = kod NSXMLParserErrorDomain = 5 "Operacja nie mogła zostać zakończona (błąd NSXMLParserErrorDomain 5)." Im przy użyciu PHP usług internetowych – Rushi

1

Innym możliwym rezonem może być brak znacznika głównego. przykład: dane xml jak to --->


2011-12-22

<days_remaining> 
      0 
</days_remaining> 
0

Spróbuj ten kod na swojej metody kodowania

NSString *theXML = [[NSString alloc] initWithBytes: [_responseData mutableBytes] length:[_responseData length] encoding:NSUTF8StringEncoding]; 
Powiązane problemy