123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- // '########'########::'######:'########:'##:::'##:
- // ... ##..::##.... ##'##... ##:##.... ##:##::'##::
- // ::: ##::::##:::: ##:##:::..::##:::: ##:##:'##:::
- // ::: ##::::########:. ######::##:::: ##:#####::::
- // ::: ##::::##.... ##:..... ##:##:::: ##:##. ##:::
- // ::: ##::::##:::: ##'##::: ##:##:::: ##:##:. ##::
- // ::: ##::::########:. ######::########::##::. ##:
- // :::..::::........:::......::........::..::::..::
- //
- // Created by 亿刀/禚来强 on 13-1-28.
- // Copyright (c) 2013年 Taobao. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- /*!
- * 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<TBSDKRequestDelegate> delegate;
- //! 代理对象
- @property (nonatomic, weak) id<TBSDKRequestDataSource> dataSource;
- //! 上传下载进度代理对象
- @property (nonatomic, weak) id<TBSDKRequestProgressProtocol> 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
|