目前我正在尝试使用 NSMutableURLRequest,将 HTTPBody 设置为我的自定义编写的 NSInputStream,它提供了这个块。
如果不是因为 NSMutableURLRequest 一直要求我在我的 NSInputStream 类中实现越来越多的方法,这会很好。首先它要求我实现 - streamStatus: 这很容易实现,但是现在它要求 _scheduleInCFRunLoop:forMode:...
基本上我是从算法中生成数据,并希望通过分块请求将其发送到服务器。
这是代码:
@interface GERHTTPChunkInputStream : NSInputStream
{
uint8_t counter_;
}
- (GERHTTPChunkInputStream *)init;
- (void)dealloc;
- (NSInteger)read:(uint8_t *)buffer maxLength:(NSUInteger)len;
- (BOOL)getBuffer:(uint8_t **)buffer length:(NSUInteger *)len;
- (BOOL)hasBytesAvailable;
- (NSStreamStatus)streamStatus;
@end
@implementation GERHTTPChunkInputStream
- (GERHTTPChunkInputStream *)init {
[super init];
return self;
}
- (void)dealloc {
assert(NO);
[super dealloc];
}
- (NSInteger)read:(uint8_t *)buffer maxLength:(NSUInteger)len {
NSLog(@"Getting more bytes!!!");
for (int i = 0; i < len; ++i) {
buffer[i] = ++counter_;
}
return len;
}
- (BOOL)getBuffer:(uint8_t **)buffer length:(NSUInteger *)len {
return NO;
}
- (BOOL)hasBytesAvailable {
return YES;
}
- (NSStreamStatus)streamStatus {
return NSStreamStatusNotOpen;
}
@end