美文网首页
Android 网络技术--OkHttp

Android 网络技术--OkHttp

作者: 霖风_ | 来源:发表于2018-12-26 09:47 被阅读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第三方库来连接网络,具体步骤如下:

    • 在(app)build.gradle中添加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数据的具体步骤
    下一步看如何保存到表格中,需要重新建立一个项目存储表格。

    相关文章

      网友评论

          本文标题:Android 网络技术--OkHttp

          本文链接:https://www.haomeiwen.com/subject/emmykqtx.html