使用Http协议访问网络
2017-07-17 15:21 烈'焰 阅读(404) 评论(0) 编辑 收藏 举报1.设置一个布局用于显示得到的数据
首先要new Thread()并且在里面new Runable()方法。首先获取HttpURLConnection实例。通过Url设置UI地址,通过uri调用openConnction()方法并且赋值于我们获取的实例,通过实例设置get请求。它是以的形式返回所以我们要定义一个Buff流来读取它。并且定义一个动态数组StringBuilder用来存储我们读取的流,最后将数组里的数据转为字符串用控件调用setText()方法显示在界面上
public class MainActivity extends AppCompatActivity implements View.OnClickListener{ TextView mresponseText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mresponseText= (TextView) findViewById(R.id.text); Button send= (Button) findViewById(R.id.butn); send.setOnClickListener(this); } @Override public void onClick(View v) { if (v.getId()==R.id.butn){ sendRequestUri(); } } //发送url请求 private void sendRequestUri() { new Thread(new Runnable() { @Override public void run() { HttpURLConnection connsent = null; BufferedReader reader = null; try { URL uri = new URL("http://tuijian.hao123.com/");//设置uri connsent = (HttpURLConnection) uri.openConnection();//打开所设定的uri connsent.setRequestMethod("GET");//发送get请求 InputStream in= connsent.getInputStream();//获取返回的流 reader = new BufferedReader(new InputStreamReader(in));//利用buff读取返回的流 StringBuilder response = new StringBuilder();//将流转换为字符串 String line; while ((line=reader.readLine())!=null){ response.append(line); } show(response.toString()); } catch (Exception e) { e.printStackTrace(); }finally { if (reader!=null){ try { reader.close(); } catch (IOException e) { e.printStackTrace(); } }if (connsent!=null){ connsent.disconnect(); } } } }).start(); } public void show(final String respon){ runOnUiThread(new Runnable() { @Override public void run() { mresponseText.setText(respon); } }); } }
二。Okhttp方法
首先要添加一个依赖
compile 'com.squareup.okhttp3:okhttp:3.4.1'
创建一个OkHttppClient实例
new OkHttppClien();
如果想要发送请求要创建一个Request对象
new Request.Builder().uri("uri").build();
接下来用我们定义的实例的newCall()方法调用execute()方法,用来发送和得到返回数据的。ewCall()中的参数为我们发送的ui数据
最后将返回的数据转为字符串类型显示到控件上
private void sendRequestUriOkhttp() { new Thread(new Runnable() { @Override public void run() { try { OkHttpClient client= new OkHttpClient(); //发送请求 Request request= new Request.Builder().url("http://tuijian.hao123.com/").build(); Response response= client.newCall(request).execute();//execute()发送请求并且得到返回值 String responseData= response.body().toString();//将返回值转变为数组 show(responseData); } catch (Exception e) { e.printStackTrace(); } } }).start(); }