相信大家在做iOS应用时,少不了都会有一些Web资源的请求需求。这时可以考虑网上的第三方库,比如AFNetworking、ASIHTTPRequest等。但是如果你恰好使用了ArcGIS.Framework,Esri已经给我们提供了一个专门处理类似请求的
Objective-C类——AGSJSONRequestOperation。
AGSJSONRequestOperation的使用流程:
A、要求:安装了ArcGIS Runtime SDK for iOS
B、使用流程:
声明
@property (nonatomic,strong) AGSJSONRequestOperation* currentJsonOp;
@property (nonatomic,strong) NSOperationQueue *queue;
初始化
self.queue = [[NSOperationQueuealloc] init];
构造请求参数
NSMutableDictionary* params = [NSMutableDictionary dictionary]; [params setObject:citycode forKey:@"citycode"]; [params setObject:wh forKey:@"queryStr"]; [params setObject:@"json" forKey:@"f"]; NSString *temURL=@"http://st.geoq.cn/geocode/xxxxx/single?"; NSURL *url = [NSURL URLWithString: [temURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; self.currentJsonOp = [[AGSJSONRequestOperation alloc]initWithURL:url queryParameters:params]; self.currentJsonOp.target = self; self.currentJsonOp.action = @selector(operation:didSucceedWithResponse:); self.currentJsonOp.errorAction = @selector(operation:didFailWithError:); [self.queue addOperation:self.currentJsonOp];
处理请求响应
- (void)operation:(NSOperation*)op didSucceedWithResponse:(NSDictionary *)dataInfo { //NSLog(@"%@", dataInfo); }- (void)operation:(NSOperation*)op didFailWithError:(NSError *)error { UIAlertView* av = [[UIAlertView alloc] initWithTitle:@"Sorry" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [av show]; }