Android 网络技术--OkHttp

2018-12-26  本文已影响0人  霖风_
  1. 手机端使用HTTP协议和服务器端进行网路交互,并对服务器返回的数据进行解析
  2. webView的用法
 WebView webView = findViewById(R.id.web_view);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebViewClient(new WebViewClient());
        webView.loadUrl("https://www.baidu.com");
  1. 使用http协议访问网络:手机端向服务器端发送请求,服务器端返回数据,手机端在进行对数据的解析得到预期数据

  2. 通过使用OkHttp第三方库来连接网络,具体步骤如下:

implementation 'com.squareup.okhttp3:okhttp:3.12.0'
但是一直失败,没有添加成功

参考 https://www.jianshu.com/p/62130ee2dcf1
使用lardern就能够解决。

  1. 在AndroidMainFfest.xml中允许网络连接
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>

  2. 注意只有在主线程中才能够进行UI操作,否则无法显示

 private void showResponse(final String Data1) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                //在这里进行UI操作
                responseText.setText(Data1);
            }
        });
    }
  1. json的解析 ,通过Okhttp来获取或者接收服务器的json形式的信息,通过GSON 来解析。

    private void sendRequestWithOkHttp() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try{
                    OkHttpClient client = new OkHttpClient();
                    Request request = new Request.Builder().url("https://www.baidu.com/").build();
                    Response response = client.newCall(request).execute();
                    String responseData = response.body().string();
                    showResponse(responseData);
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }).start();
    }

    private void showResponse(final String responseData) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                //在这里进行UI操作
                responseText.setText(responseData);
            }
        });
    }

image.png

根据书上的教程成功拉去

 parseJSONWithGSON(responseData);//这个没有显示出来,出现问题
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }).start();
    }

    private void parseJSONWithGSON(final String Data) {

        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                //在这里进行UI操作
                Toast.makeText(MainActivity.this,"id is ",Toast.LENGTH_SHORT).show();
                Gson gson = new Gson();
                List<city> cities = gson.fromJson(Data,new TypeToken<List<city>>(){}.getType());
                for (city city:cities){
//                    Log.d("MainActivity","id is "+city.getId());
//                    Toast.makeText(MainActivity.this,"id is "+city.getId(),Toast.LENGTH_SHORT).show();

                }
            }
        });

对数据进行解析。
https://blog.csdn.net/huplion/article/details/78984977
通过该网页可以初步了解GSON解析复杂JSON数据的具体步骤
下一步看如何保存到表格中,需要重新建立一个项目存储表格。

上一篇下一篇

猜你喜欢

热点阅读