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

Posted

技术标签:

【中文标题】向服务器发送多个 json 数据 - ios【英文标题】:Send multiple json data to server - ios 【发布时间】:2015-08-28 05:14:35 【问题描述】:

我需要将 json 数据发送到服务器。我能够将 json 对象发送到服务器。但我想将多个 json 对象发送到服务器,如下所示。

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];

【问题讨论】:

您能否描述一下请求的其余部分会发生什么,您在 completionHandler 中是否收到错误?如果是,错误是什么? 这是你的数组 tempJsonFromDB @Abd Al-rhman Taher Badary 我第一次得到“真实”,但在我得到一些网络内容之后。 @Anbu.Karthik tempJsonFromDB 是我的准确 json。 看到这个链接可能对你有帮助***.com/questions/12299965/… 【参考方案1】:

一个视图提示:

这种方法可能只适用于同时排入队列的少量请求,例如最多 10 个。

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

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

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

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

您可以使用NSURLSession 改进代码。

如果您有大量请求,您应该使用能够处理大量并发请求的第三方库来改进您的代码。

【讨论】:

以上是关于向服务器发送多个 json 数据 - ios的主要内容,如果未能解决你的问题,请参考以下文章

从 php 服务器向 ios 设备发送多个推送通知

如何向多个设备(iOS)发送推送通知?

向 GCM 发送请求会导致 JSON_PARSIN_ERROR

如何允许我的 iOS 应用程序向服务器发送信息?

使用 socket.io 防止向多个房间发送消息

使用 JSON 数据从 Android 向服务器发送数据