基本步骤
1、在AndroidManifest.xml里加入网络访问代码
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
android:usesCleartextTraffic="true"
2、在MainActivity.java 里将网络访问放入子线程
try {
URL url = new URL("*******");//放服务器地址
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);
inputStream.close();
reader.close();
bufferedReader.close();
} catch (Exception e) {
e.printStackTrace();
}
3、将网络访问的数据传到界面(更新UI操作)
注: 子线程不能更新UI,只能放入主线程。
TextView textView; //定义
textView= findViewById(R.id.textView); //初始化
//子线程切回主线程
String finalResult = result;
runOnUiThread(new Runnable() {
@Override
public void run() {
textView.setText(finalResult);
}
});
从子线程切回主线程:
user object array object1 object3
JSON数据的传递
网络请求的数据往往不止一个数据,而是由多个数据组成的JSON数组
1、对JSON数据格式进行解析
JSONObject jsonObject = new JSONObject(finalResult);
String s = jsonObject.getString("name");
数组数据传递
JSONArray jsonArray = new JSONArray(finalResult);
for(int i=0;i<jsonArray.length();i++){
String s = jsonArray.getString(i);
Log.i("MainActivity","S="+s);
textView.setText(s);
}
JSON数据嵌套
JSON嵌套JSON:
JSONObject jsonObject = new JSONObject(finalResult);
JSONObject jsonObject1=jsonObject.getJSONObject("class");
String s=jsonObject1.getString("classname");
textView.setText(s);