1717
1818static QNResponseInfo *cancelledInfo = nil ;
1919
20+ static NSString *domain = @" qiniu.com" ;
21+
2022@implementation QNResponseInfo
2123
2224+ (instancetype )cancel {
@@ -50,7 +52,7 @@ - (instancetype)initWithStatus:(int)status
5052
5153- (instancetype )initWithStatus : (int )status
5254 errorDescription : (NSString *)text {
53- NSError *error = [[NSError alloc ] initWithDomain: @" qiniu " code: status userInfo: @{ @" error" :text }];
55+ NSError *error = [[NSError alloc ] initWithDomain: domain code: status userInfo: @{ @" error" :text }];
5456 return [self initWithStatus: status error: error];
5557}
5658
@@ -64,17 +66,21 @@ - (instancetype)init:(int)status
6466 _xlog = [xlog copy ];
6567 if (status != 200 ) {
6668 if (body == nil ) {
67- _error = [[NSError alloc ] initWithDomain: @" qiniu " code: _statusCode userInfo: nil ];
69+ _error = [[NSError alloc ] initWithDomain: domain code: _statusCode userInfo: nil ];
6870 }
6971 else {
7072 NSError *tmp;
7173 NSDictionary *uInfo = [NSJSONSerialization JSONObjectWithData: body options: NSJSONReadingMutableLeaves error: &tmp];
7274 if (tmp != nil ) {
7375 uInfo = @{ @" error" :[[NSString alloc ] initWithData: body encoding: NSUTF8StringEncoding] };
7476 }
75- _error = [[NSError alloc ] initWithDomain: @" qiniu " code: _statusCode userInfo: uInfo];
77+ _error = [[NSError alloc ] initWithDomain: domain code: _statusCode userInfo: uInfo];
7678 }
7779 }
80+ else if (body == nil || body.length == 0 ) {
81+ NSDictionary *uInfo = @{ @" error" :@" no response json" };
82+ _error = [[NSError alloc ] initWithDomain: domain code: _statusCode userInfo: uInfo];
83+ }
7884 }
7985 return self;
8086}
@@ -88,15 +94,16 @@ - (BOOL)isCancelled {
8894}
8995
9096- (BOOL )isOK {
91- return _statusCode == 200 ;
97+ return _statusCode == 200 && _error == nil && _reqId != nil ;
9298}
9399
94100- (BOOL )isConnectionBroken {
95- return _statusCode == kQNNetworkError ;
101+ // reqId is nill means the server is not qiniu
102+ return _statusCode == kQNNetworkError || _reqId == nil ;
96103}
97104
98105- (BOOL )couldRetry {
99- return (_statusCode >= 500 && _statusCode < 600 && _statusCode != 579 ) || _statusCode == kQNNetworkError || _statusCode == 996 || _statusCode == 406 ;
106+ return (_statusCode >= 500 && _statusCode < 600 && _statusCode != 579 ) || _statusCode == kQNNetworkError || _statusCode == 996 || _statusCode == 406 || (_statusCode == 200 && _error != nil ) ;
100107}
101108
102109@end
0 commit comments