Androidc学习笔记六之网络传输
来源:互联网 发布:淘宝会员卡图片 编辑:程序博客网 时间:2024/06/14 08:34
android中如何通过网络传输数据 HttpURLConnection OKHttp JsonObject Gson
2017/3/11 记载
使用网络技术:利用网络上的数据,来让我们的APP跟后台服务器交互
WebView的用法:在APP中嵌入一个浏览器展示我们的web页面(学过web都知道最好开发啊一个响应式页面)
小例子:
activity_main.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <WebView android:id="@+id/web_view" android:layout_width="match_parent" android:layout_height="match_parent"/></LinearLayout>
增加网络请求权限:
<uses-permission android:name="android.permission.INTERNET"/>
MainActivity.javapackage com.example.ldp.com.webview;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.webkit.WebView;import android.webkit.WebViewClient;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); WebView webView = (WebView)findViewById(R.id.web_view); webView.getSettings().setJavaScriptEnabled(true); webView.setWebViewClient(new WebViewClient()); webView.loadUrl("http://www.baidu.com"); }}
效果图:这里使用到一个HTTP协议请求的,网上这类知识很多,感兴趣的网友可以去看看。
学会使用HttpURLConnection
两种方式:HttpURLConnection 和 HttpClient(这种方式缺点过多,不建议使用)
步骤:
ERL url = new URL("http://www.baidu.com");HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("GET");connection.setConnecTimeout(8000);connection.setReadTimeout(8000);InputStream in = connection.getInputStream();connection.disconnect();这个步骤应该是一目了然了吧。
<ScorllView>控件:手机屏幕很小,一般是内容都显示不下的,用这个可以上下滑动显示
接下来这个例子,我就截图演示:
最后记得开启网络访问权限INTERNET
为什么要用runOnUiThread()方法呢?因android中是不允许子线程进行UI操作的,所以使用这个方法
可以将子线程转换成主线程。
我们进行网络访问并不是非要用HttpURLConnection,市面上有很多网络通信库都可以代替,
比如OKHttp、Picasso、Retrofit等
重点说OKHttp(加入库依赖):
效果图:
重点学习如何解析来自网络上的JSON数据,最初的时候网络的数据都是采用xml的来传输的,哪个是传输的
后来发现这种数据个不仅效率极慢,而且开发效率不高。后来采用的json数据格式:
使用JSONObject来解析(在web中我也经常使用)
效果图:
使用GSON解析:
加入依赖库:com.google.code.gson:gson:2.8.0
它比JSONObject更简便的地方在哪里呢,就是将json数据格式转化成对象,学对象映射的
这样是不是很容易明白,使用也越来越简单了。
两句代码就搞定了:
Gson gson = new Gson();Person person = gson.fromJson(jsonData,Person.class);
如果说一组还好,但是如果是多组呢?想起List了没,借助TypeToken期望解析成的数据类型传入到fromJson中
List<Person> people = gson.fromJson(jsonData,new TypeToken<Lsit<Person>>(){}.getType());
使用方法效果图:
当使用网络传输的时候我们都需要对网络进行一次HTTP请求,就会出现很多相同而冗余的代码
这个时候我们就要想着将这个写成工具类:
效果图:
0 0
- Androidc学习笔记六之网络传输
- Androidc学习笔记一之Activity活动
- Androidc学习笔记七之Service服务
- Androidc参数学习笔记
- Androidc学习笔记四之数据库持久化操作
- Androidc学习笔记八之UI及高级开发技巧
- Androidc学习笔记五之四大组件之内容提供器ContentProvider
- Androidc学习笔记二之四大布局及碎片理解用法
- Androidc学习笔记三之BroadcastReceiver广播接收器及单双页模式
- Androidc学习笔记九之Alarm机制、Dom模式、APK签名
- 传输层学习之六(SCTP)
- 黑马程序员学习笔记之六(java网络编程)
- Zynq-Linux移植学习笔记之六-netperf网络测试
- 数据的网络传输学习笔记
- 网络学习笔记(传输层)
- 关于网络传输层的一些概念笔记----C++学习之路
- JSP学习笔记之六
- Shader之学习笔记六
- iOS10 权限崩溃问题
- Android中string.xml中%1$s、%1$d等的用法
- android调试开发利器 ADB Debug
- Android与php、mysql
- 蓝牙avrcp协议源码分析
- Androidc学习笔记六之网络传输
- Standford 机器学习—第二讲 Linear Regression with multiple variables(多变量线性回归)
- Fragment的生命周期
- 数据结构
- 小类型向大类型转换
- 分析balde源码,查看Web工程处理Ioc注入的背后的过程,ThreadLocal 使用保存线程所有的request and respond,
- Java_jxl创建Excel文件,插入数据(含图片)
- 稠密索引与稀疏索引
- 计算机图形学02一一OpenGL 代码实现绘制一条线