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
原创粉丝点击