发送多个json数据到服务器 - ios

问题描述:

我需要发送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

视图提示:

  • 最多为10

    该方法可以只用小数量的请求被排入队列所有一次工作,说

  • 为了避免潜在的并发问题,请将[mainQueue setMaxConcurrentOperationCount设置为1。注意:您的示例中目前没有问题,但您的生产代码可能必须访问某个共享变量 - 您可能会在其中获得数据竞赛。确保您使用专用串行队列,其中将执行对该共享变量的所有访问。 (您也可以派遣到主队列或专用调度队列)。

    请注意,该设置不会改变并发活动HTTP请求的数量。这仅适用于代表。

  • 打印出委托中的所有错误消息,以及响应的状态码和Content-type标头。

  • 当您从服务器打印出返回的内容时,请考虑这可能是使用任意编码的HTML代码。当服务器以2xx以外的状态返回时,通常会出现这种情况 - 即使您明确指定了Accept标头。虽然这是服务器端的错误,但您必须处理它。可悲的是,这是一种很常见的服务器行为。

  • 您可以使用NSURLSession来改进代码。

  • 如果你有大量的请求,你应该改进你的代码利用第三方库,它能够处理大量的并发请求。