根据抓取的天气状况api获取当前位置的当前天气状况,一个重要前提就是先地图定位当前城市,定位的方法这里就不说了,毕竟此贴主要是针对天气
#pragma mark - 天气
- (void)setWeather{
NSString *httpUrl = @"http://api.map.baidu.com/telematics/v3/weather";
NSString *lng = [Util userDefaultsDataForKey:@"longitude"];
NSString *lat = [Util userDefaultsDataForKey:@"latitude"];
if ([lng isEqualToString:@""]&&[lat isEqualToString:@""]) {
lng = @"121.505856";
lat = @"31.216019";
}
NSString *location = [NSString stringWithFormat:@"%@,%@",lng,lat];
NSString *ak = @"6tYzTvGZSOpYB5Oc2YGGOKt8";
NSString *httpArg = [NSString stringWithFormat:@"location=%@&output=json&ak=%@",location,ak];
[self request: httpUrl withHttpArg: httpArg];
}
//数据的请求
//传递经纬度参数
-(void)request: (NSString*)httpUrl withHttpArg: (NSString*)HttpArg {
NSString *urlStr = [[NSString alloc]initWithFormat: @"%@?%@", httpUrl, HttpArg];
NSURL *url = [NSURL URLWithString: urlStr];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL: url cachePolicy: NSURLRequestUseProtocolCachePolicy timeoutInterval: 10];
[request setHTTPMethod: @"GET"];
[request addValue: @"" forHTTPHeaderField: @"apikey"];
[NSURLConnection sendAsynchronousRequest: request
queue: [NSOperationQueue mainQueue]
completionHandler: ^(NSURLResponse *response, NSData *data, NSError *error){
if (error) {
NSLog(@"Httperror: %@%ld", error.localizedDescription, (long)error.code);
} else {
NSInteger responseCode = [(NSHTTPURLResponse *)response statusCode];
NSString *responseString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
SBJson4Parser *jsonParser = [SBJson4Parser parserWithBlock:^(id item, BOOL *stop) {
NSObject *itemObject = item;
if ([item isKindOfClass:[NSDictionary class]]) {
//接收获取下来的数据,然后获取数据进行相对应的赋值
NSDictionary *dict = (NSDictionary *)itemObject;
NSArray *dicArr = dict[@"results"];
NSDictionary *weartherDic = nil;
for (NSDictionary *dict in dicArr) {
NSArray *weatherArr = dict[@"weather_data"];
weartherDic = [weatherArr objectAtIndex:0];
}
NSString *temperature = weartherDic[@"temperature"];
NSString *weatherName = weartherDic[@"weather"];
NSArray *strArr = [temperature componentsSeparatedByString:@" ~ "];
NSLog(@"+++++++=%@",strArr);
//去掉摄氏度
NSString *lowtem = nil;
NSString *highttem = nil;
NSArray *subStr = [strArr[1] componentsSeparatedByString:@"℃"];
lowtem = subStr[0];
highttem = strArr[0];
[Util setUserDefaultsData:lowtem forKey:@"lowTmp"];
[Util setUserDefaultsData:highttem forKey:@"hightTmp"];
NSLog(@"subStr++++++=%@",lowtem);
[Util setUserDefaultsData:temperature forKey:@"weather"];
[Util setUserDefaultsData:[NSString stringWithFormat:@"%@",weatherName] forKey:@"weatherName"];
//代理传递信息
[self.delegates addWeatherView:self];
}
} allowMultiRoot:NO unwrapRootArray:NO errorHandler:^(NSError *error) {
NSLog(@"%@",error);
}];
[jsonParser parse:data];
NSLog(@"HttpResponseCode:%ld", (long)responseCode);
NSLog(@"HttpResponseBody %@",responseString);
}
}];
}