Androidc学习笔记六之网络传输

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.java
package 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值