Android Studio第九课(学习打卡Day11)


作者介绍:友友们好我是乱披风锤,大二学生党一枚

作者主页:乱披风锤的个人博客主页.跳转到个人简介
我和友友们一样喜欢编辑,天天敲代码,沉迷学习,日渐消瘦。很荣幸能向大家分享我的所学,和大家一起进步。如果文章有错误,欢迎在评论区指正。那么开始今天的学习吧!
支持我:点赞+收藏⭐️+留言

Android Studio第九课(网络编程)

  • 一、准备工作,开启网络访问权限
  • 二、导包,添加依赖
  • 三、核心代码
  • 四、运行结果
  • 总结


一、准备工作,开启网络访问权限

AndroidManifest.xml加入

   <uses-permission android:name="android.permission.INTERNET"/>
 android:usesCleartextTraffic="true"

如图:
Android Studio第九课(学习打卡Day11)_第1张图片

二、导包,添加依赖

Android Studio第九课(学习打卡Day11)_第2张图片
在build.gradle添加

 implementation 'com.google.code.gson:gson:2.9.0'

三、核心代码

package com.hnucm.network;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.telephony.SignalStrength;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

import com.google.gson.Gson;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.HttpURLConnection;
import java.net.URL;

public class MainActivity extends AppCompatActivity {
    //网络请求   得到数据   解析JSON数据
    @Override
    protected void onResume() {
        super.onResume();
    }

    TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //{ "age":30,"name":"张三", "isstudent":true }

        textView=findViewById(R.id.TextView);

//findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
//    @Override
//    public void onClick(View view) {


//解决办法->换一个线程 创建一个新线程
        Thread thread=new Thread(){
            @Override
            public void run() {
                super.run();
                //run方法里面执行代码就是在子线程
                try {
                    URL url = new URL("http://121.4.44.56/object1\n");
                    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                    urlConnection.setRequestMethod("GET");


                    InputStream inputStream = urlConnection.getInputStream();// 字节流
                    Reader reader = new InputStreamReader(inputStream);//字符流
                    BufferedReader bufferedReader = new BufferedReader(reader);// 缓存流
                    String result = "";
                    String temp;
                    while ((temp = bufferedReader.readLine()) != null) {
                        result += temp;
                    }
                    Log.i("MainActivity", result);


                    //所有UI操作应该在主线程中执行
                    //切换到主线程




                    String finalResult=result;
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            //一次性将JSON解析为一个对象
                            Gson gson=new Gson();
                            Student student = gson.fromJson(finalResult, Student.class);
                            textView.setText(student.class1.classname);

                            //object1    { "age":20,"name":"张三", "isstudent":true,"class":{"grade":"18级","classname":"计算机科学与技术"} }
                            //object2    { "grade":"18级","classname":"计算机科学与技术","students":["张三","李四","王五"] }

                            // object3   { "grade":"18级","classname":"计算机科学与技术","students":[ { "id":"001","age":30,"name":"张三", "isstudent":false }, { "id":"002","age":25,"name":"李四", "isstudent":true }, { "id":"003","age":26,"name":"王五", "isstudent":true } ]}
                            //字符串 ,整型 ,浮点型 ,布尔 ,Json类型 ,数组
//                            try {
//                                JSONObject jsonObject=new JSONObject(finalResult);
//
//                                JSONArray jsonArray=jsonObject.getJSONArray("students");
//                                for (int i=0;i
//                                   // String student = jsonArray.getString(i);
//                                    //Log.i("MainActivity",student);
//
//                                    JSONObject studentObj=jsonArray.getJSONObject(i);
//                                    String name=studentObj.getString("name");
//                                    String id=studentObj.getString("id");
//                                    int age=studentObj.getInt("age");
//                                    Log.i("MainActivity","name="+name+"id="+id+"age="+age);
//                                }
//                                //JSONObject classObject=jsonObject.getJSONObject("class");
//                               // String classname = classObject.getString("classname");
//                               // String name= jsonObject.getString("name");
//
//                                    textView.setText(jsonArray.getString(1));
//
//                            } catch (JSONException e) {
//                                e.printStackTrace();
//                            }


                          // textView.setText(finalResult);
                        }
                    });

                    //textView.setText(result);
                    inputStream.close();
                    reader.close();
                    bufferedReader.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        };
        thread.start();

//    }
//});

    }
}



四、运行结果

Android Studio第九课(学习打卡Day11)_第3张图片


总结

好了,那么今天的学习就到这里了。友友们觉得不错的可以给个关注,点赞或者收藏哦!感谢各位友友们的支持。以下的代码希望各位大佬们自行检验哦,毕竟亲手操作让记忆更加深刻。

你可能感兴趣的