从GET请求解析NSData

时间:2011-10-21 15:28:14

标签: iphone objective-c ios cocoa-touch

我从GET请求中创建了NSData。

NSString *nameID = [[NSString alloc]initWithString: @"1"];        
NSString *urlString = [NSString stringWithFormat:@"http://www.xxxxx.com/news/index.php?id=%@", 
                       [nameID stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

NSURL *url = [[NSURL alloc] initWithString:urlString];

NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];

NSData *urlData;
NSURLResponse *response;
urlData = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:nil];
NSString *results = [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding]; 
NSLog(@"%@",urlData);

然后如何解析?我只有这样的东西:

2011-10-21 19:27:06.213 httptest[1674:207] <3c21444f 43545950 45206874 6d6c2050 55424c49 4320222d 2f2f5733 432f2f44 54442058 48544d4c 

2 个答案:

答案 0 :(得分:0)

您正在记录urlData(NSData对象)而不是结果(NSString)。 NSData对象在输出控制台中显示为十六进制数字对。如果您记录“结果”,您将看到如下内容:

<!DOCTYPE http...

这可能就是你所期待的。

答案 1 :(得分:0)

您已将结果数据转换为NSString

首先,您必须定义数据是什么:XML-或JSON-String?还是二进制编码的东西?然后你必须编写自己的解析器或选择你喜欢的解析器。

我假设您的结果是xml,我们假设您要使用TBXML - Dom-Parser。然后尝试:

NSString *results = [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding]; 
TBXML * tbxml = [TBXML tbxmlWithXmlString:result];
TBXMLElement *rootElement = tbxml.rootElement;
TBXMLElement *childELement = [TBXML childElementNamed:@"myChildTag" parentElement:rootElement]
..... //depends on how your xml looks like