0

我本月正在为 android 和 ios 开发一个新的应用程序。我需要构建与应用程序通信的服务器端。我读过最流行的交流方式是使用 json。我的问题是如何?用https发送它?你能给我一个真实的例子吗?它是如何工作的?它是安全的和安全的吗?谢谢你!

4

3 回答 3

1

那里有多种选择。

iOS

  1. NSJSON序列化
  2. SBJson
  3. 如果您使用的是基于 REST 的API,请使用RestKit

安卓

检查这个答案

于 2013-03-02T12:52:49.477 回答
1

NSJSONSerialization是你的方式,以防万一iOS

于 2013-03-02T12:34:43.707 回答
1

您必须创建 Web 服务以从服务器获取数据并在 iphone 中使用该 Web 服务,为此您可以使用此代码。它将从 json 格式的 Web 服务 url 获取数据。您需要安装 sbjson 库来解析 json 数据你的项目。

#import "SBJson.h"

- (void)viewDidLoad
{       

idArray = [[NSMutableArray alloc] init];

 NSString *post =@"";

                NSURL *url=[NSURL URLWithString:@"http://blog.bigwavemedia.co.uk/?json=get_recent_posts"];

                NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

                NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

                NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
                [request setURL:url];
                [request setHTTPMethod:@"POST"];
                [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
                //[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
                // [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
                [request setHTTPBody:postData];

                //[NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]];

                NSError *error = [[NSError alloc] init];
                NSHTTPURLResponse *response = nil;
                NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];



                //NSLog(@"Response code: %d", [response statusCode]);
                if ([response statusCode] >=200 && [response statusCode] <300)
                {
                    NSString *responseData = [[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
                    // NSLog(@"Response ==> %@", responseData);                    

                    SBJsonParser *jsonParser = [SBJsonParser new];
                    NSDictionary *jsonData = (NSDictionary *) [jsonParser objectWithString:responseData error:nil];


                    //NSLog(@"json data is : %@",jsonData);

                    NSArray *allDataArray = [[NSArray alloc]init];
                    allDataArray= [jsonData objectForKey:@"posts"];


                    for(int i=0;i<[allDataArray count];i++)
                    {
                        NSDictionary *tempDictionary = [allDataArray objectAtIndex:i];


                        if([tempDictionary objectForKey:@"id"]!=nil)
                        {

                            [idArray addObject:[tempDictionary objectForKey:@"id"]];
                        }

                    }

                } else {
                    if (error) NSLog(@"Error: %@", error);
                    [self alertStatus:@"Connection Failed" :@"Does not find any data!"];
                }


            }
            @catch (NSException * e) {
                NSLog(@"Exception: %@", e);
                [self alertStatus:@"Data not found." :@"Does not find any data!"];
            }
[super viewDidLoad];
}

这里 post 变量用于在您的 url 中发送参数。并且 NSMutableURLRequest 用于调用 url 并以 json 格式获取数据,而不是在这里我们使用 sbjson 库中的 SBJsonParser 并在字典或数组中解析该数据。

于 2013-03-02T12:36:34.843 回答