2

私はObjectiveCに慣れていないので、InputStreamをStringに変換するなど、通常Javaで行うことを実行しようとしています。基本的に、私はこのJavaコードをObjectiveCで実行したいと思います...

InputStream in = … //An inputStream i got from http request

BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder str = new StringBuilder();
String line = null;

while ((line = reader.readLine()) != null) {
    str.append(line);
}

String myString = str.toString();
in.close();

私の問題が十分に明確に説明されていることを願っています!:)

ありがとう!

4

2 に答える 2

9

ええと、カレブは正しいですが、質問に答えます:

NSInputStream *inputStream = [[NSInputStream alloc] init];
uint8_t buffer[1024];
int len;
NSMutableString *total = [[NSMutableString alloc] init];
while ([inputStream hasBytesAvailable]) {
    len = [inputStream read:buffer maxLength:sizeof(buffer)];
    if (len > 0) {
        [total appendString: [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding]];
    }
}

あなたのencoding議論は異なるかもしれません。

于 2013-02-13T04:15:11.450 に答える
5

私はObjectiveCに慣れていないので、InputStreamをStringに変換するなど、通常Javaで行うことを実行しようとしています。基本的に、私はこのJavaコードをObjectiveCで実行したいと思います...

理解できますが、Javaで行うのと同じ方法でこれらのことを行おうとすると、うまくいかないことがよくあります。Objective-CではJavaで行われるのと同じように行われるとは限らないため、新しいクラス名を入れ替えて構文を少し修正することはできません。クラスはありますが、NSInputStream通常、Webサーバーからデータをダウンロードするために使用されることはありません。つまり、httpリクエストから入力ストリームを取得することはありません。代わりに、NSURLConnectionクラスとNSURLConnectionDelegateプロトコルを見てください。確かに、あなたが読むべきURLローディングシステムプログラミングガイドと呼ばれる全体のドキュメントがあります。インスタンスを作成しNSURLConnection、それにデリゲートを与えて、それを実行させます。代表者の-connection:didReceiveData:データが着信するとメソッドが呼び出され、デリゲートはデータを文字列に追加するなど、データに対して必要な処理を実行できます。

于 2013-02-13T04:09:19.840 に答える