返回 登录
2

网络请求数据

package com.lianxi.feihu.day2http;

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();
}
}
}

评论