一、WebView
作用:在自己的应用程序里嵌入一个浏览器,从而非常轻松的展示各种各样的网页。
步骤:
①授权
修改AndroidMainfest.xml文件,加入权限说明:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.demo">
<uses-permission android:name="android.permission.INTERNET"/>
②.xml文件
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="MissingConstraints" />
③.java文件
WebView webView =(WebView)findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl("https://www.baidu.com");
注:代码可以运行的前提是你的手机或者模拟器是连网的,如果是模拟器,只需要保证电脑上能正常上网即可。
二、HTTP协议访问网络
使用HttpURL
①new 一个URL对象,并传入目标的网络地址,然后调用一下openConnection方法
URL url=new URL("https://www.baidu.com");
connection=(HttpURLConnection)url.openConnection();
②设置Http请求所使用的方法:POST GET
GET:从服务器中获取数据
POST:提交数据给服务器
connection.setRequestMethod("GET");
③设置一些连接超时,读取超时等的自由定制
connection.setConnectTimeout(8000);
connection.setReadTimeout(8000);
④使用getInputStream方法获取服务器返回的输入流,对输入流进行读取
InputStream in=connection.getInputStream();
⑤调用disconnect方法将HTTP连接关掉
connection.disconnect();
实例:.java文件
package com.example.demo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URL;
public class Index extends AppCompatActivity implements View.OnClickListener {
TextView responseText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_index);
Button button=(Button)findViewById(R.id.test);
button.setOnClickListener(this);
responseText=(TextView)findViewById(R.id.response_text);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.test:{
SendRequest();
break;
}
default:
break;
}
}
private void SendRequest(){
new Thread(new Runnable() {
@Override
public void run() {
HttpURLConnection connection=null;
BufferedReader reader=null;
try{
URL url=new URL("https://www.baidu.com");
connection=(HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(8000);
connection.setReadTimeout(8000);
InputStream in=connection.getInputStream();
reader=new BufferedReader(new InputStreamReader(in));
StringBuilder response =new StringBuilder();
String line;
while((line=reader.readLine())!=null){
response.append(line);
}
showResponse(response.toString());
}catch (Exception e) {
e.printStackTrace();
}
finally {
if(reader!=null){
try{
reader.close();
}catch (IOException e){
e.printStackTrace();
}
}
if(connection!=null){
connection.disconnect();
}
}
}
}).start();
}
private void showResponse(final String response){
runOnUiThread(new Runnable() {
@Override
public void run() {
responseText.setText(response);
}
});
}
}
三、使用OkHttp访问网络
使用OkHttp向网络提交数据时,需要设计一个FormBody用来存储数据
FormBody requestBody = new FormBody.Builder()
.add("username","admin")
.add("password","123456")
.build();
其余的使用方法与http类似
①在Manifest中授权
②设置gradle引入okhttp
③.java代码
private void SendRequest(){
new Thread(new Runnable() {
@Override
public void run() {
try{
OkHttpClient client=new OkHttpClient();
// Log.d("TAG","1");
RequestBody requestBody=new FormBody.Builder()
// .add("name",str1)
// .add("carnumber",str3)
// .add("location",str4)
.add("name","111")
.add("carnumber","222")
.add("location","333")
.build();
Log.d("TAG","333");
Request request=new Request.Builder()
.url("http://192.168.1.134/parkmanage/user/setInfo.do")
// .url("https://www.baidu.com/")
.post(requestBody)
.build();
// Log.e("name","str1"+str1);
Log.d("TAG","444");
Response response=client.newCall(request).execute();
Log.d("TAG","555");
String responseData =response.body().string();
Log.d("BBB",responseData);
// showResponse(responseData);
} catch (Exception e1) {
e1.printStackTrace();
Log.d("EEE","qiii");
}
}
}).start();
}