2013-01-05 54 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枚舉類型