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。看看Multipart POST using NSInputStreamNSInputStream subclass asynchronous

看来你确实需要实现这些奇怪的私有方法……

于 2010-11-05T21:57:53.110 回答