0

サーバーリターンの情報を取得する場合、LOGCAT は 1 2 3 を表示します。結果は 1、5、6 です。

if 文を判断すると、エラーが発生します。結果は1だと思いますが、それでも間違っています。

try {
    URL url=new URL(urlstr);
    URLConnection conn = null;
    Log.i("Text", "1");
    try {
        conn = url.openConnection();
        Log.i("Text", "2");
        InputStream in=conn.getInputStream();
        Log.i("Text", "3");
        byte[] buffer=new byte[in.available()];
        in.read(buffer);
        String result=new String(buffer);
        Log.i("Text", "result="+result);
        if(result.equals("1"))
        {    
            Log.i("Text", "4");
        } else {
            Log.i("Text", "5");
        }
        Log.i("Text", "6");
    }
}                                   

どうしてか分かりません。誰でも私を助けることができますか?どうもありがとう。

4

1 に答える 1

3

何を達成しようとしているのか正確には不明ですが、これらの 3 行には 3 つの問題があります。

byte[] buffer=new byte[in.available()];
in.read(buffer);
String result=new String(buffer);
  1. ほとんど使用しないでくださいavailable()。代わりに、固定サイズのバッファを作成します (大量のデータを期待していないように聞こえるので、小さなバッファで十分です) available()。空の配列を作成することになります-確かにそれをしたくありません。
  2. の戻り値を無視していますInputStream.read()絶対にしないでください。実際にどれだけのデータが読み取られたかはわかりません。
  3. エンコーディングを指定せずにaStringから aを作成しています。byte[]そうしないでください。データが実際に使用しているエンコーディングは?

私の推測では、空の配列を渡しているか、実際に複数のバイトを読み取っています。

于 2012-12-06T07:33:07.740 に答える