代码库> 网络> 一个网络请求对应一个类,告别杂乱的代码
一个网络请求对应一个类,告别杂乱的代码
关注
上传者:kevin0571 分类:网络(Networking)
查看次数:2111 下载次数:184
上传时间:2015-09-27 大小:49 B
实现一个网络请求类,声明该网络请求类相关的属性,非只读的属性将会被自动打包为请求参数。
以下示例代码将可以被解读为:
http://${baseUrl}/data/2.5/weather, GET,
params: {
    lat,
    lng, // lat, lng 是包含在 location里的属性
    user_info // 驼峰命名的属性将自动被转换为下划线命名(可定制)
}
若请求失败,将每隔5秒重试一次(retryInterval),最多重试3次(maxRetryCount)

详情请见:http://github.com/kevin0571/STNetTaskQueue

示例代码:


@interface STOpenWeatherNetTask : STHTTPNetTask

@property (nonatomic, strong) STLocation *location;
@property (nonatomic, strong) NSString *userInfo;
@property (nonatomic, strong, readonly) NSString *place;
@property (nonatomic, assign, readonly) float temperature;

@end

@implementation STOpenWeatherNetTask

- (STHTTPNetTaskMethod)method
{
    return STHTTPNetTaskGet;
}

- (NSString *)uri
{
    return @"data/2.5/weather";
}

// Optional. Retry 3 times after error occurs.
- (NSUInteger)maxRetryCount
{
    return 3;
}

// Optional. Retry for all types of errors
- (BOOL)shouldRetryForError:(NSError *)error
{
    return YES;
}

// Optional. Retry after 5 seconds.
- (NSTimeInterval)retryInterval
{
    return 5;
}

// Optional. Custom headers.
- (NSDictionary *)headers
{
    return @{ @"custom_header": @"value" };
}

// Optional. Add parameters which are not inclued in requestObject and net task properties.
- (NSDictionary *)parameters
{
    return @{ @"other_parameter": @"value" };
}

- (void)didResponseDictionary:(NSDictionary *)dictionary
{
    _place = dictionary[@"name"];
    _temperature = [dictionary[@"main"][@"temp"] floatValue] / 10;
}

@end

收藏
我来说两句
发表评论
您还没有登录!请登录注册
所有评论(0
综合评论
提示
sina weixin mail 回到顶部