2009-09-21 4 views
1

Я пытался понять это в течение нескольких недель, и я до сих пор ничего не получаю. Я использую ASIHTTPRequest, и ive успешно отправил данные на сервер, и теперь мне нужно получить ответ XML, проанализировать его и сохранить элементы для каждого помеченного NSString, чтобы я мог опубликовать его на сервере. Кто-нибудь имеет представление о том, как это сделать?Как определить ответ HTTP, проанализировать xml и сохранить в NSString?

+0

Не могли бы вы дать образец кода? –

ответ

4

От взгляда на странице How to Use, я думаю, что вы хотите реализовать методы, которые можно вызвать, когда запрос будет завершен. Например, скажем, у вас есть метод done:, который вы хотите вызвать, когда ваш запрос завершен. Вы можете установить этот метод в качестве «готового» селектора по запросу:

NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"]; 
ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:url] autorelease]; 
[request setDelegate:self]; 
[request setDidFinishSelector:@selector(done:)];

Позже, вы реализуете done: метод:

- (void)done:(ASIHTTPRequest *)request 
{ 
    NSString *response = [request responseString]; 
}

Это все предполагая, вы посылаете запросы асинхронно; если вы используете синхронные вызовы, вы можете просто использовать свойство responseString по запросу.

+0

спасибо. его работа сейчас – timothy5216

+0

Ошибка в коде выше. Должен быть @selector (requestDone), просто говоря. – Jordan

+0

@ Иордан - спасибо, исправлено – Tim

2

Получите копию библиотеки XML для iPhone, если у вас есть тривиальный синтаксический анализ XML.
Я использовал GDataXMLNode Google для этого раньше, но я бы, вероятно, использовал KissXML для будущей работы, потому что это ближе к NSXML (библиотека Apple, которая не поставляется для iphone, к сожалению).

Вот способ разобрать ответ, здесь я ищу ошибки, которые могли бы видеть, как правило с сервера Rails, вдоль линий:

<errors><error>Description of what went wrong</error></errors> 

Вы можете видеть, что я получаю «запрос 'обратно из библиотеки, и я передаю строку ответа в GDataXMLDocument.

GDataXMLDocument* root = [[GDataXMLDocument alloc] initWithXMLString:[request responseString] options:0 error:nil]; 

    // Parse the error strings 
    NSArray* errors = [root nodesForXPath:@"//errors/error" error:nil]; 

    // What is the first error string.... etc...... 
    NSString* firstError = [[errors objectAtIndex:0] stringValue]; 

Возвращаемое массив здесь содержит список узлов, соответствующих этому пути в XML. Если вы не знакомы с XPath, это не сложно узнать и полезно для вывода данных из ответа XML. Вызов stringValue против возвращаемого в массиве элемента возвращает текст между элементами в приведенном выше примере.

Вы можете, конечно, заполнить словарь и т. Д. С помощью возвращаемых данных XML. Имеют смысл?

+0

Да, это имеет смысл. Я получил его сейчас – timothy5216

+0

Я пробовал это, и он не анализирует XML, он просто возвращает null – timothy5216

+0

ждать, не возражайте. Я забыл изменить nodeForXPath – timothy5216

 Смежные вопросы

  • Нет связанных вопросов^_^