Ошибка синтаксического анализатора Ошибка Domain = NSXMLParserErrorDomain Code = 4 "Операция не может быть завершена." - PullRequest
5 голосов
/ 05 сентября 2011

Я звоню в веб-сервис, как показано ниже:

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

Когда я получаю ответ, выдается следующая ошибка:

DONE. Получено байт: 422 показывает XML (ноль) Ошибка синтаксического анализатора Ошибка Domain = NSXMLParserErrorDomain Code = 4 "Операция не может быть завершена. (NSXMLParserErrorDomain Error 4.)"

Я довольно много искал в интернете. Но не смог ничего найти. Любая помощь в этом, пожалуйста.

Ответы [ 3 ]

8 голосов
/ 05 сентября 2011

NSXMLParserErrorDomain error 4 означает, что анализатору XML был предоставлен пустой документ. Это говорит о том, что входные данные были либо нулевыми, либо вам удалось изменить их до того, как они были переданы парсеру.

Я лучше посмотрел твой код. Проблема не в том, что вы не получаете ответ. Просто ты этого не ждешь. Отправленный вами запрос является асинхронным, но вы пытаетесь сразу заполнить переменную webData (т.е. синхронно).

1 голос
/ 03 января 2012

Другим возможным резонансом может быть отсутствие корневого тега.Пример: XML-данные, подобные этим --->


2011-12-22

<days_remaining>
            0
</days_remaining>
0 голосов
/ 23 февраля 2012

Попробуйте этот код в вашем методе кодирования

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