ios json 同步请求和异步请求

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

猜你喜欢

转载自404530969.iteye.com/blog/2264074