HttpURLConnection的使用
-
获取HttpURLConnection对象实例
- new一个URL 对象 ,传入目标的网络地址:
URL url = new URL("https://www.baidu.com");
- 调用URL对象的
openConnection()
方法:HttpURLConnection connection = (HttpURLConnection)url.openConnection();
- new一个URL 对象 ,传入目标的网络地址:
-
设置HTTP请求使用的方法:
GET
和POST
- connection.setRequestMethod(“GET”);
- connection.setRequestMethod(“POST”);
DataOutputStream out= new DataOutputStream(connecton.getOutputStrem());
out.write(“username=admin&password=123456”);
-
接下来可以进行一个自由的定制,比如连接超时,读取超时的毫秒数,以及服务器希望得到的一些消息头等,例如:
connection.setConnectionTimeout(8000); connection.setReadTimeout(8000);
-
获取服务器的返回流:
InputStream in = connection.getInputStream()
-
将连接关闭:
connection.disconnect()
布局文件中可以使用一个新的控件ScrollView(滑动布局)
-
在活动中利用
HttpURLConnection
来发送消息请求、获取消息响应private void sendRequestWithHttpURLConnection(){ //开启线程来发起网络请求 new Thread(new Runnable(){ HttpURLConnection connection = null; BufferedReader reader = null; try{ URL url = new URL("https://www.baidu.com"); connectoin=(HttpURLConnection)url.openConnection(); connection.setRequestMethod("GET"); connection.setConnecteTimeout(8000); connection.setReadTimeout(8000); InputStream in = connection.getInputStream(); //下面对获取到的流对象进行读取 reader = new BufferedReader(new InputStreamReader(in)); StringBuilder response = new StringBuilder(); String line = null; while((line=reader.readLine())!=null) response.append(line); showResponse(response.toString()); }catch(Exception e){ e.printStackTrace(); }finally{ if(reader!=null){ try{ reader.close(); }catch(Exception e){ e.printStackTrace(); } if(connection!=null) connection.disconnect(); } }).start(); } private void showResponse(final String response){ runOnUiThread(new Runnable(){ @Override public void run(){ //在这里进行UI操作,将结果显示在界面上 responseText.setText(response) } }); }
Android
不允许在子线程中进行UI操作,调用runOnUiThread()可以切换到主线程中。
声明网络权限:
<uses-permission android:name="android.permission.INTERNET"></users-persmission>
##使用OkHttp
OkHttp项目地址:https://github.com/square/okhttp
先在build.gradle中添加对OkHttp的依赖:
implementation ‘com.squareup.okhttp3:okhttp:4.3.1’
- 创建一个
OkHttpClient
对象:OkHttpClient client = new OkHttpClient();
- 如果想要发起一条HTTP请求,就必须创建一个Request对象:
- “GET”:
Request request = new Request.Builder().url("https://www.baidu.com").build();
- “POST”:
RequestBody requestBody = new FormBody.builder().add("username","admin").add("password","123456").build(); Request request = new Requst.Builder().url("https:www.baidu.com").post(requestBody).build();
- “GET”:
- 发起请求,并得到返回数据
Response response = client.newCall(request).execute();
- 得到返回的具体内容:
String responseData = response.body().string()