目前我正在嘗試使用NSMutableURLRequest,將HTTPBody設置爲我自定義的寫入NSInputStream,它提供了這個塊。如何在iPhone上實現分塊的http請求?
如果不是因爲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
_NSInputStream_實現了兩個提到的方法。你的流類真的是_NSInputStream_的子類嗎?聽起來好像你有_NSStream_的子類而不是_NSInputStream_。 – Codo 2010-11-05 19:10:47
絕對從NSInputStream繼承。 - streamStatus:方法已經存在,但是在調用時它說NSStream的實現是抽象的。另一個似乎沒有實施。它看起來像NSUrlRequest,除了一個非常特定的內部NSInputStream。 ( – rui 2010-11-05 19:58:09
)我有同樣的需求以編程方式創建一個輸入流,其證明是困難的 – nont 2010-11-22 18:51:31