Синтаксический анализ XML не работает должным образом в Objective-C

Я новичок в программировании для iPhone, и это первый раз, когда я разбираю файл XML. Я добавил URL-адрес, а также жестко закодировал файл XML в строку, однако я не получаю правильный ответ от сервера.

Вот мой код:

NSString *post = @"<?xml version=\"1.0\"encoding=\"UTF-8\"?<request><call>GetNewChapters</call><udid>1000000000000000000000000000000000000000</udid><book_id>1</book_id><updatetoken>B20100125054802</updatetoken></request>";

NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

NSURL *url=[NSURL URLWithString:@"https://www.paisible.com/babelle_api"];

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];    
[request setHTTPBody:postData];



NSString *myStr = [[NSString alloc] initWithData:postData encoding:NSUTF8StringEncoding];
NSLog(@"String Value :%@",myStr);


NSLog(@"theRequest: %@", request);
NSURL *theConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
if(theConnection)
{
    webData = [[NSMutableData data] retain];
}
else
{
    NSLog(@"theConnection is NULL");
}

Где в качестве веб-данных используются данные NSMutable. Пожалуйста, дайте мне знать, какие ошибки я сделал в моем коде синтаксического анализа.


person Community    schedule 23.02.2011    source источник
comment
Ого! успокойтесь, мы постараемся исправить это. Не нужно кричать.   -  person The Scrum Meister    schedule 23.02.2011
comment
Ой! Кажется, ваша клавиша Caps Lock сломана.   -  person Cody Gray    schedule 23.02.2011
comment
Пожалуйста, уточните два последних предложения - желательно без заглавных букв.   -  person Fibericon    schedule 23.02.2011
comment
я также могу предоставить структуру xml ‹?xml version=1.0 encoding=UTF-8?› ‹request› ‹call›GetNewChapters‹/call› ‹udid›100000000000000000000000000000000000000000‹/udid› ‹book_id›1‹/book_id› B20100125054802‹/updatetoken› ‹/request› дайте мне знать, что не так с кодом, а также проверьте URL   -  person    schedule 23.02.2011
comment
Какой ответ вы получаете? Я думаю, что вы не вставили/не написали методы делегата для получения ответа.   -  person Praveen S    schedule 23.02.2011
comment
нет, я написал все три метода делегата для NSXML, однако ответ, который я получаю от сервера, таков: ‹?xml version=1.0 encoding=UTF-8?›‹response›‹call›‹/call›‹return_code›ERROR ‹/return_code›‹message›Пустой запрос‹/message›‹actioncode›ВЫХОД‹/actioncode›‹/response›   -  person    schedule 23.02.2011
comment
когда соединение NSURL завершило загрузку, вызывается тогда NSString *theXML = [[NSString alloc] initWithBytes: [webData mutableBytes] length:[webData length] encoding:NSUTF8StringEncoding]; NSLog(@theXML: %@, theXML); вызовите эти строки, чтобы проверить ответ от сервера   -  person    schedule 23.02.2011


Ответы (1)


Попробуйте заменить

NSURL *theConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

со следующим:

NSURLResponse *resp;
NSError *error;
NSMutableData *webData = [NSURLConnection sendSynchronousRequest:request returningResponse:&resp error:&error]; 

Затем проверьте, что содержит «webData».

person Misha    schedule 23.02.2011
comment
Спасибо за информацию, но Майк, я реализовал то, что вы сказали, однако это не сработало, показывая тот же ответ, что и предыдущий, а также одно предупреждение (несовместимые типы Ojective-C, назначающие структуру NSDATA, ожидаемую структуру NSMutableData), также МАЙК, пожалуйста, дайте мне знать, есть ли какие-либо проблемы с URL-адресом. - person ; 23.02.2011
comment
попробуйте разместить запрос следующим образом: NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; - person Misha; 23.02.2011
comment
я нашел решение, и оно работает и получает ответ от сервера, когда мы начинаем читать xml, я написал @xml = и остальную часть строки, спасибо за информацию и помощь. - person ; 24.02.2011
comment
Привет @kashif Пожалуйста, поделитесь своим решением в качестве ответа, чтобы оно могло помочь и другим, у меня тоже такая же проблема. поэтому, пожалуйста, поделитесь. - person Muhammad Rizwan; 29.11.2011