Http


import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class MainActivity extends AppCompatActivity {

    private int code;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView textView = (TextView)findViewById(R.id.tv);
        textView.setText(code);

        //網絡請求需要在線程中完成
        new Thread(new Runnable() {
            @Override
            public void run() {
                getData();
            }
        }).start();


    }

    /**
     * 實現請求網絡數據的功能
     */
    public void getData(){

        try {
            //把一個網絡資源地址  變成url對象
            String path = "http://10.1.2.116:8080/day2/hehe.txt";
            URL url =  new URL(path);
            //使用url打開網絡連接
            HttpURLConnection conn =  (HttpURLConnection)url.openConnection();
            //使用連接對象設置一些請求參數
            conn.setConnectTimeout(5000);
            //讀取服務器返回的數據超過5秒  報超時
            conn.setReadTimeout(5000);
            //獲取服務器的返回碼  如果=200 請求成功 否則失敗
            code = conn.getResponseCode();
            Log.i("=======================", "code: " + code);
            if(code == 200){
                //如果成功了 從conn對象中獲取網絡傳過來的數據流數據
                InputStream is = conn.getInputStream();
                //使用字節數組輸出流把  輸入流中的數據轉成字符串
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                int len = -1;
                byte[] buff = new byte[1024];
                while((len = is.read(buff)) != -1){
                    bos.write(buff,0,len);
                }
                //自己創建的流需要自己關閉
//                is.close();
                bos.close();

                String data = new String(bos.toByteArray());
                Log.i("=======================", "getData: " + data);
//                Toast.makeText(MainActivity.this,data ,Toast.LENGTH_SHORT).show();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章