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