現在、私は 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