2015-08-28 39 views
0

我需要發送json數據到服務器。我能夠發送json對象到服務器。但我想發送多個json對象到像下面的服務器。發送多個json數據到服務器 - ios

Json1:

{ 
"Comments" : "test」, 
"user_id" : 「test」, 
"EdDate" : "08\/26\/2015 03:16:58 PM", 
"StDate" : "08\/26\/2015 03:16:20 PM", 
"latitude" : "", 
"longitude" : "", 
"sample" : [ 
{ 
    "quantity" : 「1」, 
} 
] 
} 

的Json 2:

{ 
"Comments" : "test」, 
"user_id" : 「test」, 
"EdDate" : "08\/26\/2015 04:11:51 PM", 
"StDate" : "08\/26\/2015 04:11:21 PM", 
"latitude" : "", 
"longitude" : "", 
"sample" : [ 
{ 
    "quantity" : 「1」, 
} 
] 
} 

我需要一個發一個。我使用下面的代碼,但只有一次我得到正確的迴應。

NSOperationQueue *mainQueue = [[NSOperationQueue alloc] init]; 
for(int i=0 ; i < [tempJsonFromDB count]; i++) 
{ 
     tempjsondata = [tempjsondata stringByAppendingString:tempJsonFromDB[i]]; 

     NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
     [request setURL:[NSURL URLWithString:url]]; 
     [request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
     [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
     [request setHTTPMethod:@"POST"]; 
     [request setHTTPBody:[tempjsondata dataUsingEncoding:NSUTF8StringEncoding]]; 

     [mainQueue setMaxConcurrentOperationCount:5]; 
     [NSURLConnection sendAsynchronousRequest:request queue:mainQueue completionHandler:^(NSURLResponse *response, 
                           NSData *urlData, NSError *requestError) 
     { 
      NSString* newStr1 = [NSString stringWithUTF8String:[urlData bytes]]; 
      NSLog(@「string%@「,newStr1); 
     }]; 

     NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 
     [connection start]; 
} 
+0

請問您能否描述請求的其餘部分會發生什麼,在completionHandler中是否出現錯誤,如果是,錯誤是什麼? –

+0

這是你的陣列tempJsonFromDB –

+0

@Abd Al-rhman Taher Badary第一次我得到「真實」但我得到一些網頁內容後。 – VJVJ

回答

0

視圖提示:

  • 最多爲10

    該方法可以只用小數量的請求被排入隊列所有一次工作,說

  • 爲了避免潛在的併發問題,請將[mainQueue setMaxConcurrentOperationCount設置爲1。注意:您的示例中目前沒有問題,但您的生產代碼可能必須訪問某個共享變量 - 您可能會在其中獲得數據競賽。確保您使用專用串行隊列,其中將執行對該共享變量的所有訪問。 (您也可以派遣到主隊列或專用調度隊列)。

    請注意,該設置不會改變併發活動HTTP請求的數量。這僅適用於代表。

  • 打印出委託中的所有錯誤消息,以及響應的狀態碼和Content-type標頭。

  • 當您從服務器打印出返回的內容時,請考慮這可能是使用任意編碼的HTML代碼。當服務器以2xx以外的狀態返回時,通常會出現這種情況 - 即使您明確指定了Accept標頭。雖然這是服務器端的錯誤,但您必須處理它。可悲的是,這是一種很常見的服務器行爲。

  • 您可以使用NSURLSession來改進代碼。

  • 如果你有大量的請求,你應該改進你的代碼利用第三方庫,它能夠處理大量的併發請求。