1.网页显示(WebView):
在Mainfest.xml里配置:
//打开百度网页(还需要其他配置,网页打开一瞬间就消失) webView = findViewById(R.id.net_webView); //支持js脚本 webView.getSettings().setJavaScriptEnabled(true); //设置调整页面 webView.setWebViewClient(new WebViewClient()); // webView.setWebChromeClient(new WebChromeClient());//这行最好不要丢掉 //传入网址 webView.loadUrl("http://www.baidu.com"); |
2.请求网页(OkHttp)
github地址:https://github.com/square/okhttp
implementation 'com.squareup.okhttp3:okhttp:3.11.0' |
①get请求
//创建客户端 OkHttpClient client = new OkHttpClient(); //创建请求对象(get请求) Request request = new Request.Builder() .url("http://www.baidu.com")//添加访问网址 .build(); try { //客户端回调函数 client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { //回调的方法执行在子线程。 if(response.isSuccessful()){ Log.d("kwwl","获取数据成功了"); //响应成功 code:200 Log.d("kwwl","response.code()=="+response.code()); Log.d("kwwl","response.body().string()=="+response.body().string()); } } }); } catch (Exception e) { e.printStackTrace(); } |
②post请求
(1).向服务器发送键值对数据(FormBody)
//post请求 //创建okhttp对象 OkHttpClient client = new OkHttpClient(); //创建请求表单 FormBody.Builder fromBody = new FormBody.Builder(); //添加传递数据 fromBody.add("userName","sxl"); fromBody.add("passWord","123456"); //创建请求对象 Request request = new Request.Builder() .url("http://www.baidu.com") //传递请求体 .post(fromBody.build()) .build(); client.newCall(request).enqueue(new Callback() {}) |
(2).向服务器发送JSON数据(RequestBody)
//创建okhttp客户端对象 OkHttpClient client = new OkHttpClient(); //声明数据类型为json格式 MediaType JSON = MediaType.parse("application/json; charset=utf-8"); //json数据 String jsonStr = "{\"username\":\"lisi\",\"nickname\":\"李四\"}"; RequestBody body = RequestBody.create(JSON,jsonStr); //创建请求对象 Request request = new Request.Builder() .url("http://www.baidu.com") .post(body) .build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) {
}
@Override public void onResponse(Call call, Response response) throws IOException {}) |
向服务器发送File数据(MediaType)
//创建OkHttpClient对象 OkHttpClient client = new OkHttpClient(); //数据类型为json格式 MediaType fileType = MediaType.parse("File/*"); //file对象 File file = new File("path"); RequestBody body = RequestBody.create(fileType , file ); Request request = new Request.Builder() .url("http://www.baidu.com") .post(body) .build(); client.newCall(request).enqueue(new Callback() {}); |
(3) 使用MultipartBody同时传递键值对参数和File对象
OkHttpClient client = new OkHttpClient(); File file = new File("path");//file对象. MultipartBody multipartBody =new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart("groupId","groupId")//添加键值对参数 .addFormDataPart("title","title") .addFormDataPart("file",file.getName(),RequestBody.create(MediaType.parse("file/*"), file))//添加文件 .build(); final Request request = new Request.Builder() .url("http://www.baidu.com") .post(multipartBody) .build(); client.newCall(request).enqueue(new Callback() {}); |
3.okhttpUtils
okhttp 封装工具OkHttpUtils
https://github.com/guozhengXia/OkHttpUtils
代码很简单,只有三个Java文件,建议下载后将Java文件拷贝到工程中使用
解析json数据:GSON
导入库:implementation 'com.google.code.gson:gson:2.7'