2012-04-23 178 views
0

我想在我的项目中使用TFHpple,这里是该代码......它相当简单的理解:TFHpple null返回响应

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 
    NSURL *url = [NSURL URLWithString:@"http://v1.myurl.com/somemethod"]; 
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
    [request setDelegate:self]; 
    [request startAsynchronous]; 
} 

- (void)viewDidUnload 
{ 
    [self setGpMapView:nil]; 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return YES; 
} 

- (void)requestFinished:(ASIHTTPRequest *)request 
{ 
    // Use when fetching text data 
    NSString *responseString = [request responseString]; 

    // Use when fetching binary data 
    NSData *responseData = [request responseData]; 
    TFHpple *doc = [[TFHpple alloc] initWithXMLData:responseData]; 
    NSArray *elements = [doc searchWithXPathQuery:@"/entry"]; 
    NSLog(@"count: %@",[elements count]); 

} 

- (void)requestFailed:(ASIHTTPRequest *)request 
{ 
    NSError *error = [request error]; 
} 

我之间也是用asihttp库提http请求调用。 我在控制台中得到空,我已经检查了xml ..我知道那个标签是肯定存在的。 请问有什么方法吗?

编辑 - 1

这里是XML模式:

<feed xmlns:s="http://syndication.nhschoices.nhs.uk/services" xmlns="http://www.w3.org/2005/Atom"> 
<title type="text"> 
NHS Choices - GP Practices Near Location - richmond - Within 50km 
</title> 
<id> 
http://v1.syndication.nhschoices.nhs.uk/organisations/gppractices/location?range=50&northing=174900&easting=517900 
</id> 
<rights type="text">© Crown Copyright 2009</rights> 
<updated>2012-04-24T11:54:04+01:00</updated> 
<category term="Search"/> 
<logo> 
http://www.nhs.uk/nhscwebservices/documents/logo1.jpg 
</logo> 
<author> 
<name>NHS Choices</name> 
<uri>http://www.nhs.uk</uri> 
<email>[email protected]</email> 
</author> 
<link rel="self" type="application/xml" title="NHS Choices - GP Practices Near Location - richmond - Within 50km" href="http://v1.syndication.nhschoices.nhs.uk/organisations/gppractices/location?apikey=YAHUGHET&range=50&northing=174900&easting=517900&name=richmond"/> 
<link rel="first" type="application/xml" title="first" length="1000" href="http://v1.syndication.nhschoices.nhs.uk/organisations/gppractices/location?apikey=YAHUGHET&range=50&northing=174900&easting=517900&name=richmond&page=1"/> 
<link rel="next" type="application/xml" title="next" length="1000" href="http://v1.syndication.nhschoices.nhs.uk/organisations/gppractices/location?apikey=YAHUGHET&range=50&northing=174900&easting=517900&name=richmond&page=2"/> 
<link rel="last" type="application/xml" title="last" length="1000" href="http://v1.syndication.nhschoices.nhs.uk/organisations/gppractices/location?apikey=YAHUGHET&range=50&northing=174900&easting=517900&name=richmond&page=10"/> 
<link rel="alternate" title="NHS Choices - Find and choose services - GP Practices" href="http://www.nhs.uk/ServiceDirectories/pages/ServiceSearch.aspx?ServiceType=GP"/> 
<s:SearchCoords>174900,517900</s:SearchCoords> 
<entry> 
<id> 
http://v1.syndication.nhschoices.nhs.uk/organisations/gppractices/32248 
</id> 
<title type="text">Sayer A</title> 
<updated>2012-04-24T10:54:04Z</updated> 
<link rel="self" title="Sayer A" href="http://v1.syndication.nhschoices.nhs.uk/organisations/gppractices/32248?apikey=YAHUGHET"/> 
<link rel="alternate" title="Sayer A" href="http://www.nhs.uk/ServiceDirectories/Pages/GP.aspx?pid=15F37AEF-EC5B-4A90-9E72-269ADEB39629"/> 
<content type="application/xml"> 
<s:organisationSummary> 
<s:name>Sayer A</s:name> 
<s:address> 
<s:addressLine>The Richmond Green Medical Cen</s:addressLine> 
<s:addressLine>19 The Green</s:addressLine> 
<s:addressLine>Richmond</s:addressLine> 
<s:addressLine>Surrey</s:addressLine> 
<s:postcode>TW91PX</s:postcode> 
</s:address> 
<s:contact type="General"> 
<s:telephone>020 83327515</s:telephone> 
</s:contact> 
<s:geographicCoordinates> 
<s:northing>174900</s:northing> 
<s:easting>517800</s:easting> 
<s:longitude>-0.305512266736965</s:longitude> 
<s:latitude>51.4608026642546</s:latitude> 
</s:geographicCoordinates> 
<s:Distance>0.1</s:Distance> 
</s:organisationSummary> 
</content> 
</entry> 
<entry> 
+1

是否可以发布xml模式的样本? – Alladinian 2012-04-24 12:21:04

+0

@Alladinian我编辑了我的问题。 – Maverick 2012-04-24 12:27:02

回答

0

确定。显然你的Root元素是<feed>,里面有一些<entry>元素。所以你必须改变这一行(注意双“/”)才能捕捉到它们。如果你只是记录你的响应,以确保你正在给解析器提供正确的xml,这将会很有帮助:

NSArray *elements = [doc searchWithXPathQuery:@"//entry"]; 
+0

仍然为空。我以前也尝试过,但仍然给它空。 – Maverick 2012-04-24 12:41:06

+0

尝试NSLog你的'responseString'来验证你是否得到了有效的响应。 – Alladinian 2012-04-24 12:59:39

+0

mate..responseString即将到来...我一遍又一遍地检查它。我可以向你保证它即将到来。 – Maverick 2012-04-24 13:03:05