2010-11-05 19 views
1

目前我正在嘗試使用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 
+0

_NSInputStream_實現了兩個提到的方法。你的流類真的是_NSInputStream_的子類嗎?聽起來好像你有_NSStream_的子類而不是_NSInputStream_。 – Codo 2010-11-05 19:10:47

+0

絕對從NSInputStream繼承。 - streamStatus:方法已經存在,但是在調用時它說NSStream的實現是抽象的。另一個似乎沒有實施。它看起來像NSUrlRequest,除了一個非常特定的內部NSInputStream。 ( – rui 2010-11-05 19:58:09

+0

)我有同樣的需求以編程方式創建一個輸入流,其證明是困難的 – nont 2010-11-22 18:51:31

回答