2013-01-05 25 views
0

我是新iphone发展可能有人帮我出这个问题,从一周我与一个问题面临的,就是我有多个URL像下面多个URL调用

for (int i=0;i<=[listingAffArray];i++) 
    NSString *urlStr=[NSString stringWithFormat:@"http://demo.holidayjuggle.net:7777/services/inventoryservice/%@/%@/stores/search?location=12.971598700000000000,77.594562699999980000,50",appDelegate.buyingAff,[appDelegate.listingAffArray objectAtIndex:i]]; 
} 
在此

我从所有的网址,但在didfinishloading得到回应可能无法找到的网址responsedata

NSURL *url=[NSURL URLWithString:urlStr]; 

NSMutableURLRequest *req=[NSMutableURLRequest requestWithURL:url]; 

[req setHTTPMethod:@"GET"]; 

[req setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
[req setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 

connection=[NSURLConnection connectionWithRequest:req delegate:self]; 
if(connection){ 
    NSLog(@"connection is successfull "); 
} 
else{ 
    NSLog(@"connection failed"); 
} 

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
{ 
    responseData=[[NSMutableData alloc]init]; 
} 

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{ 
    [responseData appendData:data]; 
} 

-(void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    NSString *strResponse=[[NSString alloc]initWithData:responseData encoding:NSUTF8StringEncoding]; 

} 

在responsedata只有最后的URL数据是在那里,我把断点和观察到的每个URL被调用didfinishloading,当第二网址称它正在与secondurl调用lik一起进行升级Ë在responsedata最后的URL列表仅存在。如何每个响应数据seperately

由于事先存储

sivakumari

回答

0

创建类的阵列和存储您的阵列中的每个strResponse(使用addObject )。

此外,这没有任何意义:

for (int i=0;i<=[listingAffArray];i++) 
    NSString *urlStr=[NSString stringWithFormat:@"http://demo.holidayjuggle.net:7777/services/inventoryservice/%@/%@/stores/search?location=12.971598700000000000,77.594562699999980000,50",appDelegate.buyingAff,[appDelegate.listingAffArray objectAtIndex:i]]; 
} 

[listingAffArray]部分应该给你一个编译器错误,并且即使没有工作,你会通过每一次循环中覆盖相同的变量。

0

是的,它发生,因为所有NSURLConnection共享相同的委托同一对象如果妳想要加载多个URL应该比你有多个空间来存储数据,这是“自我”

所以responseData的一个对象是不够的。

可以有多种方式让我推荐一个我使用的方法。

  • 声明一个NSMutableDictionary对象
  • 商店NSURLConnection对象作为重点,并NSMutableData对象的值,所以如果u有3网址你有NSMutableDictionary 3 entery。
  • NSURLConnection的每个委托方法中,仅将数据追加到相应的NSMutableData对象。

告诉我如果u需要更多的帮助....

+0

你能给我示例代码 – sivakumari

+0

你可以请给我这个戴夫的示例代码 – sivakumari

+0

你在哪里遇到问题? – CRDave

0

尝试在异步的方式来调用Web服务与网址。 ie.Hit第一个网址,当您收到第一个网址的结果时,点击第二个网址请求。在那之后,当你收到第二个url响应时,就会触发第三个url请求。

这些所有请求都应该在后台线程或新线程中运行,以便它不影响主线程。

还需要很枚举数据类型一样

enum { 
    requestOne=0, 
    requestTwo, 
    requestThree, 
    requestFour 
}currentRequest; 

当u开始打在currentRequestData第一网址分配requestOne和响应检查机智这个enumDataType。当收到响应然后打seconod枚举类型