궁금한게 있어서요....

 

package com.androidbook.networking;

import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class SecondNetwork extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        Button go = (Button) findViewById(R.id.do_action);
        go.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                try {
                    URL text = new URL("http://api.flickr.com/services/feeds/photos_public.gne?id=26648248@N04&lang=en-us&format=atom");
                    //URL text = new URL("http://www.naver.com");
                     HttpURLConnection http= (HttpURLConnection) text.openConnection();
                    
                     Log.i("Net", "length = " + http.getContentLength());
                     Log.i("Net", "respCode = " + http.getResponseCode());
                     Log.i("Net", "contentType = "+ http.getContentType());
                     Log.i("Net", "content = "+http.getContent());
                    
                    InputStream isText = http.getInputStream();
                    byte[] bText = new byte[2048];
                    FileOutputStream fos = openFileOutput ("file.out", MODE_PRIVATE);
                    int numAvailable = isText.available();
                   
                    Log.i("Net", "available = " + numAvailable);
                  
                    int readSize = 0;
                    while (readSize != -1) {
                        numAvailable = isText.available();
                        Log.i("Net", "available = " + numAvailable);

                        readSize = isText.read(bText);

                        if (readSize > 0) {
                            fos.write(bText, 0, readSize);
                        }
                        Log.i("Net", "readSize = " + readSize);
                      
                    }
                                     
                    isText.close();
                    http.disconnect();
                    fos.close();
                   
                } catch (Exception e) {
                    Log.e("Net", "Error in network call", e);
                }

            }

        });
    }

}

 

지금 보고 있는 예제인데요.
Log.i("Net", "length = " + http.getContentLength());
이 부분부터 이해가 안되서요~

http.getContentLength() = -1 이던데
왜 -1인지 이해가 안되요.
명확하지 않으면 -1을 리턴한다는데..
무엇이 명확하지 않다는건지.. 잘 모르겟어요~

 

책에 있는 예제인데
솔직히 무얼 뜻하는건지 잘 모르겠어요;;;
로그캣도 보니

====10-27 10:43:29.543: INFO/Net(865): length = -1
10-27 10:43:29.543: INFO/Net(865): respCode = 200
10-27 10:43:29.543: INFO/Net(865): contentType = application/atom+xml; charset=utf-8
10-27 10:43:29.553: INFO/Net(865): content = org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection$ChunkedInputStream@43766588
10-27 10:43:29.563: INFO/Net(865): available = 2048
10-27 10:43:29.563: INFO/Net(865): available = 2048
10-27 10:43:29.563: INFO/Net(865): readSize = 2048
10-27 10:43:29.563: INFO/Net(865): available = 2048
10-27 10:43:29.563: INFO/Net(865): readSize = 2048
10-27 10:43:29.563: INFO/Net(865): available = 2048
10-27 10:43:29.563: INFO/Net(865): readSize = 2048
10-27 10:43:29.563: INFO/Net(865): available = 74
10-27 10:43:29.563: INFO/Net(865): readSize = 74
10-27 10:43:29.638: INFO/Net(865): available = 1805
10-27 10:43:29.643: INFO/Net(865): readSize = 1805
10-27 10:43:29.653: INFO/Net(865): available = 0
10-27 10:43:29.653: INFO/Net(865): readSize = 1659
10-27 10:43:29.726: INFO/Net(865): available = 0
10-27 10:43:29.795: INFO/Net(865): readSize = 2048
10-27 10:43:29.795: INFO/Net(865): available = 1424
10-27 10:43:29.795: INFO/Net(865): readSize = 1424
10-27 10:43:29.865: INFO/Net(865): available = 2048
10-27 10:43:29.883: INFO/Net(865): readSize = 2048
10-27 10:43:29.883: INFO/Net(865): available = 847
10-27 10:43:29.883: INFO/Net(865): readSize = 847
10-27 10:43:29.883: INFO/Net(865): available = 0
10-27 10:43:29.893: INFO/Net(865): readSize = 569
10-27 10:43:29.973: INFO/Net(865): available = 0
10-27 10:43:30.054: INFO/Net(865): readSize = 2048
10-27 10:43:30.054: INFO/Net(865): available = 2048
10-27 10:43:30.054: INFO/Net(865): readSize = 2048
10-27 10:43:30.054: INFO/Net(865): available = 2048
10-27 10:43:30.063: INFO/Net(865): readSize = 2048
10-27 10:43:30.063: INFO/Net(865): available = 1291
10-27 10:43:30.063: INFO/Net(865): readSize = 1291
10-27 10:43:30.063: INFO/Net(865): available = 0
10-27 10:43:30.073: INFO/Net(865): readSize = 2048
10-27 10:43:30.073: INFO/Net(865): available = 2048
10-27 10:43:30.073: INFO/Net(865): readSize = 2048
10-27 10:43:30.073: INFO/Net(865): available = 2048
10-27 10:43:30.073: INFO/Net(865): readSize = 2048
10-27 10:43:30.073: INFO/Net(865): available = 301
10-27 10:43:30.083: INFO/Net(865): readSize = 301
10-27 10:43:30.153: INFO/Net(865): available = 0
10-27 10:43:30.221: INFO/Net(865): readSize = 1673
10-27 10:43:30.221: INFO/Net(865): available = 0
10-27 10:43:30.223: INFO/Net(865): readSize = 2048
10-27 10:43:30.223: INFO/Net(865): available = 2048
10-27 10:43:30.223: INFO/Net(865): readSize = 2048
10-27 10:43:30.223: INFO/Net(865): available = 2048
10-27 10:43:30.223: INFO/Net(865): readSize = 2048
10-27 10:43:30.223: INFO/Net(865): available = 2031
10-27 10:43:30.223: INFO/Net(865): readSize = 2031
10-27 10:43:30.223: INFO/Net(865): available = 0
10-27 10:43:30.223: INFO/Net(865): readSize = 1137
10-27 10:43:30.233: INFO/Net(865): available = 0
10-27 10:43:30.233: INFO/Net(865): readSize = -1

=====

이렇게 출력되는데 무엇을 의미하는지 잘 모르겠네요..

설명은 HttpURLConnection 객체는 URL에서 자료를 실제로 가져오기 전에 그 자료에 대한 정보를 미리 얻고자 할 때 유용하다는데
그럼 정보를 미리 얻어서 정확한 정보이면 다음 작업으로 넘어가고
정확한 정보이지 않으면 끊기는건가요???
그럼 -1이 리턴되는건 잘못 되었다는 뜻인가요....

-1이 왜 리턴되는 것인지
위의 예제가 무엇인지 궁금한데.. 설명 좀 부탁드릴게요 ㅠㅠ..