您的位置:首页 > 移动开发 > IOS开发

ios json 同步请求和异步请求

2015-12-15 13:09 896 查看

ios Json获取数据 的同步get请求和异步get请求方法

 json的解析方法有4种 此处使用的是使用IOS自带解析类NSJSONSerialization方法解析:(无需导入包,低于IOS5版本IOS不支持)

 

//加载一个NSURL对象
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://smartbox.gtimg.cn/s3/?q=600&t=all"]];
//将请求的url数据放到NSData对象中
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
 把得到的数据再进行处理,这是同步的get请求

 同步请求时如果请求到url连接不到或者网速不好等会导致获取不到数据

 

 

 

异步请求需要实现<NSURLConnectionDelegate>代理

 

-(void)data_json  //数据解析
{

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://smartbox.gtimg.cn/s3/?q=600&t=all"]];
NSURLConnection *respose = [[NSURLConnection alloc]initWithRequest:request delegate:self];

}

//异步请求代理方法
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
self.receiveData = [NSMutableData data];//接收数据,数据不是一下全接收到的所以是可变的data
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data

{
//拼接接收到的数据
[self.receiveData appendData:data];

}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection

{

//解析
m_arr_all_stock_codes = [[NSMutableArray alloc]initWithCapacity:0];
getData =  [[NSString alloc]initWithData:self.receiveData encoding:NSUTF8StringEncoding];
}
  unicode转化成utf8的方法

 

- (NSString*) replaceUnicode:(NSString*)aUnicodeString //unicode转化成utf8的方法
{
NSString *tempStr1 = [aUnicodeString stringByReplacingOccurrencesOfString:@"\\u" withString:@"\\U"];

NSString *tempStr2 = [tempStr1 stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];

NSString *tempStr3 = [[@"\"" stringByAppendingString:tempStr2] stringByAppendingString:@"\""];

NSData *tempData = [tempStr3 dataUsingEncoding:NSUTF8StringEncoding];

NSString* returnStr = [NSPropertyListSerialization propertyListFromData:tempData mutabilityOption:NSPropertyListImmutable format:NULL errorDescription:NULL];
return [returnStr stringByReplacingOccurrencesOfString:@"\\r\\n" withString:@"\n"];

}
 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: