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


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

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


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

AndroidManifest.xml加入

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

如图:
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、导包,添加依赖

在这里插入图片描述
在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<jsonArray.length();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();

//    }
//});

    }
}



四、运行结果

在这里插入图片描述


总结

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

  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值