Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: CommunityОтветов: 1

Я новичок в программировании для 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. Пожалуйста, дайте мне знать, какие ошибки я сделал в моем коде синтаксического анализа.

  • Ого! успокойтесь, мы постараемся исправить это. Не нужно кричать. The Scrum Meister 23.02.2011
  • Ой! Кажется, ваша клавиша Caps Lock сломана. Cody Gray 23.02.2011
  • Пожалуйста, уточните два последних предложения - желательно без заглавных букв. Fibericon 23.02.2011
  • я также могу предоставить структуру xml ‹?xml version=1.0 encoding=UTF-8?› ‹request› ‹call›GetNewChapters‹/call› ‹udid›100000000000000000000000000000000000000000‹/udid› ‹book_id›1‹/book_id› B20100125054802‹/updatetoken› ‹/request› дайте мне знать, что не так с кодом, а также проверьте URL 23.02.2011
  • Какой ответ вы получаете? Я думаю, что вы не вставили/не написали методы делегата для получения ответа. Praveen S 23.02.2011
  • нет, я написал все три метода делегата для NSXML, однако ответ, который я получаю от сервера, таков: ‹?xml version=1.0 encoding=UTF-8?›‹response›‹call›‹/call›‹return_code›ERROR ‹/return_code›‹message›Пустой запрос‹/message›‹actioncode›ВЫХОД‹/actioncode›‹/response› 23.02.2011

iphoneobjective-cxmlxml-parsing

Ответы

Ответ 1 · рейтинг 1 · Misha

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

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

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

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы