簡體   English   中英

如何將NSInputStream轉換為NSString或如何讀取NSInputStream

[英]How to convert NSInputStream to NSString or how to read NSInputStream

我正在嘗試將輸入流轉換為字符串。 我要轉換的輸入流是NSURLRequest.HTTPBodyStream,顯然將httpbody設置為null,並在發出請求后將其替換為該流。 我該怎么做呢? 這是我到目前為止的內容:

#define MAX_UTF8_BYTES 6
    NSString *utf8String;
    NSMutableData *_data = [[NSMutableData alloc] init]; //for easy 'appending' bytes

    int bytes_read = 0;
    while (!utf8String) {
        if (bytes_read > MAX_UTF8_BYTES) {
            NSLog(@"Can't decode input byte array into UTF8.");
            break;
        }
        else {
            uint8_t byte[1];
            [r.HTTPBodyStream read:byte maxLength:1];
            [_data appendBytes:byte length:1];
            utf8String = [NSString stringWithUTF8String:[_data bytes]];
            bytes_read++;
        }
    }

當我打印字符串時,它要么總是為空,要么包含單個字符,甚至不輸出null。 有什么建議么?

得到它了。 我嘗試訪問的流尚未打開。 即使這樣,它還是只讀的。 因此,我制作了一個副本,然后將其打開。 但是,這仍然不對,我一次只讀取一個字節(單個字符)。 所以這是最終的解決方案:

NSInputStream *stream = r.HTTPBodyStream;
uint8_t byteBuffer[4096];

[stream open];
if (stream.hasBytesAvailable)
{
    NSLog(@"bytes available");
    NSInteger bytesRead = [stream read:byteBuffer maxLength:sizeof(byteBuffer)]; //max len must match buffer size
    NSString *stringFromData = [[NSString alloc] initWithBytes:byteBuffer length:bytesRead encoding:NSUTF8StringEncoding];

    NSLog(@"another pathetic attempt: %@", stringFromData);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM