1

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

1 に答える 1

3

ネット上のいくつかの議論によると、NSInputStreamをサブクラス化することは困難です。NSInputStreamまたはNSInputStream サブクラスの非同期を使用したマルチパート POST をご覧ください

これらの奇妙なプライベートメソッドを実際に実装する必要があるようです...

于 2010-11-05T21:57:53.110 に答える