// '########'########::'######:'########:'##:::'##: // ... ##..::##.... ##'##... ##:##.... ##:##::'##:: // ::: ##::::##:::: ##:##:::..::##:::: ##:##:'##::: // ::: ##::::########:. ######::##:::: ##:#####:::: // ::: ##::::##.... ##:..... ##:##:::: ##:##. ##::: // ::: ##::::##:::: ##'##::: ##:##:::: ##:##:. ##:: // ::: ##::::########:. ######::########::##::. ##: // :::..::::........:::......::........::..::::..:: // // Created by 亿刀/禚来强 on 13-1-28. // Copyright (c) 2013年 Taobao. All rights reserved. // #import /*! * System parameters */ #define SYS_PARAMETER_API_NAME @"api" #define SYS_PARAMETER_API_VERSOIN @"v" #define SYS_PARAMETER_SECURITY_APPKEY @"security_appkey" #define SYS_PARAMETER_APPKEY @"appkey" #define SYS_PARAMETER_SID @"sid" #define SYS_PARAMETER_TTID @"ttid" #define SYS_PARAMETER_TIMESTAMP @"timestamp" #define SYS_PARAMETER_DEVID @"devid" #define SYS_PARAMETER_LOCATION @"location" /*! * 系统http headers */ #define SYS_HTTP_HEADER_PV @"x-pv" #define SYS_HTTP_HEADER_APPKEY @"x-appkey" #define SYS_HTTP_HEADER_SID @"x-sid" #define SYS_HTTP_HEADER_UID @"x-uid" #define SYS_HTTP_HEADER_TTID @"x-ttid" #define SYS_HTTP_HEADER_TIMESTAMP @"x-t" #define SYS_HTTP_HEADER_DEVID @"x-devid" #define SYS_HTTP_HEADER_LOCATION @"x-location" #define SYS_HTTP_HEADER_SIGN @"x-sign" #define SYS_HTTP_HEADER_UTDID @"x-utdid" #define SYS_HTTP_HEADER_REQBIZ @"x-reqbiz-ext" #define SYS_HTTP_HEADER_APP_VER @"x-app-ver" #define SYS_HTTP_HEADER_WUAT @"x-wuat" /*! * open api ext params,sdk use‘s property */ #define SYS_HTTP_HEADER_EXTDATA @"x-extdata" #define SYS_HTTP_HEADER_EXTTYPE @"x-exttype" #define SYS_HTT_HEADER_ACT @"x-act" #define SYS_HTTP_HEADER_FEATURES @"x-features" /*! * security guard headers */ #define SYS_HTTP_HEADER_SIGNTYPE @"x-sign-type" #define SYS_HTTP_HEADER_UMT @"x-umt" /*! * 系统http header 常量 */ #define M_PV @"5.0" #define SYS_PARAMETER_DATA @"data" @protocol TBSDKConnectionProtocol; typedef enum _TBSDKRequestErrorType { TBSDKRequestErrorTypeConnectionFailure = 1, //网络连接失败或者无网络 TBSDKRequestErrorTypeTimedOut = 2, //网络连接超时 TBSDKRequestErrorTypeUserInvalid = 3, // user sid invalid time TBSDKREquestTooMuchRedirectionErrorType, } TBSDKRequestErrorType; @protocol TBSDKRequestDataSource; @protocol TBSDKRequestDelegate; @protocol TBSDKRequestProgressProtocol; //! 网络请求默认超时时间 #define TIME_OUT_SCONDS 10. @class TBSDKConnection; /** TBSDK的真正的网络请求类 * * 此类主要做联网控制,如超时时间、最大联网个数、取消所有网络连接等。 * TBSDK的真正的网络请求类,此类通过delegate来获取网络请求 * 的配置参数(get或post,post的value,需要上传的数据)。 * */ @interface TBSDKRequest : NSObject @property (nonatomic, strong) NSError *error; //! 代理对象 @property (nonatomic, weak) id delegate; //! 代理对象 @property (nonatomic, weak) id dataSource; //! 上传下载进度代理对象 @property (nonatomic, weak) id requestProgressDelegate; @property (nonatomic, strong, readonly) TBSDKConnection *request; // api request url @property (nonatomic, strong) NSURL *url; // api single request custom host @property (nonatomic, strong) NSString* customHost; //! 请求过期时间,默认10s @property (nonatomic, unsafe_unretained) NSTimeInterval timeOutSeconds; //! NSData 对象的请求响应数据 @property (nonatomic, retain) NSData *responseData; //! NSString 对象的请求响应数据 @property (nonatomic, retain) NSString *responseString; //! http responseStatusCode @property (nonatomic, unsafe_unretained) int responseStatusCode; @property (nonatomic, strong, readonly) NSDictionary *responseHeaders; @property (nonatomic, strong) NSDictionary *requestHeaders; //! 默认关闭 @property (nonatomic, unsafe_unretained) BOOL useHTTPCache; @property (nonatomic, unsafe_unretained) BOOL forceRefresh; @property (nonatomic, strong) NSString *apiMethod; @property (nonatomic) BOOL isAvalancheCache; // post method of body gzip size @property (nonatomic, unsafe_unretained) int gzipLimitedSize; @property (nonatomic, strong) NSArray *blackCacheKeyParam; @property (nonatomic, strong) NSMutableDictionary *networkDataSet; @property (nonatomic) CFAbsoluteTime operationQueueTime; @property (nonatomic) CFAbsoluteTime networkFinishedTime; // base property @property(strong, nonatomic) NSString* userId; // app user's id @property(strong, nonatomic) NSString* apiName; // 网关URL @property(strong, nonatomic) NSString* apiVersion; // 网关URL @property(strong, nonatomic) NSMutableDictionary* protocolParameters; // 协议参数 @property(strong, nonatomic) NSMutableDictionary* httpHeaders; // http请求头 @property(strong, nonatomic) NSMutableDictionary* extParameters; // 扩展参数 (和data参数平级) @property(strong, nonatomic) NSMutableDictionary* bizParameters; // 业务参数 @property(strong,nonatomic) NSMutableArray* uploadFiles; // @property(assign, nonatomic) BOOL isUseHttps; // 是否启用https @property(assign, nonatomic) BOOL isUseHttpPost; // 是否使用http post @property(strong, nonatomic) NSString* unitPrefix; // 单元化前缀 @property(strong, nonatomic) id context; // 调用方可以使用的上下文 /*! * 创建一个MtopRequest * @param apiName API名称 * @param apiVersion API版本 * @return * MtopRequest */ - (TBSDKRequest*) initWithApiName: (NSString*) apiName apiVersion: (NSString*) apiVersion; /*! * 添加一个http请求头 * @param value HTTP头value * @param key HTTP头key */ - (void) addHttpHeader: (NSString*) value forKey: (NSString*) key; /*! * 添加一个协议参数 * @param value 参数值 * @param key 参数名 */ - (void) addProtocolParameter: (NSString*) value forKey: (NSString*) key; /*! * 添加一个扩展参数和data参数平级 * @param value 参数值 * @param key 参数名 */ - (void) addExtParameter: (id) value forKey: (NSString*) key; /*! * 移除一个扩展参数 * @param key */ - (void) removeExtParameter:(NSString*) key; /*! * 添加一个业务参数(业务级别参数) * @param value 参数值 * @param key 参数名 */ - (void) addBizParameter: (id) value forKey: (NSString*) key; /*! * 移除一个业务参数 * @param key */ - (void) removeBizParameter:(NSString*) key; /*! * 添加要上传的文件 * @param data 文件数据 * @param fileName 本地文件名(全路径) * @param forKey form field 的 key * */ - (void) addUploadFileWithData: (NSData*) data fileName: (NSString*) fileName forKey: (NSString*) key; //! 取消TBSDK中的所有的网络连接 + (void)cancelTBSDKAllRequest; //! 开始同步网络请求, 当网络请求完成或失败后返回 - (BOOL)startSynchronous; //! 开始异步请求 - (void)startAsynchronous; //! 退出网路请求,并把delegate设置为空 - (void)cancelRequest; /*! * 重置 */ - (void) reset; @end