Android 使用okhttp 的Get和Post请求服务器上的Json数据

实验结果:
在这里插入图片描述服务器网址
http://112.124.22.238:8081/course_api/banner/query?type=1

step1

添加okhttp和Gson依赖(根据AS版本不同会有变化)

这里以28.0.0为例

implementation ‘com.squareup.okhttp:okhttp:2.7.5’
implementation ‘com.google.code.gson:gson:2.8.5’

step2
编写HttpGet或者HttpPost(其中之一即可)

HttpGet

    private void requestImages(){
        String url = "http://112.124.22.238:8081/course_api/banner/query?type=1";
        OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder()
                .url(url)
                .build();


            client.newCall(request).enqueue(new Callback() {
                @Override
                public void onFailure(Request request, IOException e) {

                }

                @Override
                public void onResponse(Response response) throws IOException {

                    if (response.isSuccessful()) {
                        String json = response.body().string();
                        Log.i("HomeFragment", "json=" + json);
                    }
                }
            });


    }

HttpPost

    private void requestImages(){
    String url = "http://112.124.22.238:8081/course_api/banner/query?";
    OkHttpClient client = new OkHttpClient();

    RequestBody body = new FormEncodingBuilder()
               .add("type","1")
                .build();
    Request request = new Request.Builder()
            .url(url)
            .post(body)
            .build();


        client.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Request request, IOException e) {

        }

        @Override
        public void onResponse(Response response) throws IOException {

            if (response.isSuccessful()) {
                String json = response.body().string();
                Log.i("HomeFragment", "json=" + json);
               
            }
        }
    });
       

}

目前我们已经能够取得服务器上的json串了,使用时可以对其进行解析封装
这里提供一种方法,使用Gson解析

step1
编写一个BaseBean.java文件

package com.diabin.minda.bean;

import java.io.Serializable;

public class BaseBean implements Serializable {

    protected long id;

    public long getId(){
        return id;
    }

    public void setId(long id){
        this.id = id;
    }
}

step2
根据json串里的数据字段再编写一个Banner.java文件(实际上就是进行json数据的封装)

package com.diabin.minda.bean;

public class Banner extends BaseBean {

    private String name;
    private String imgUrl;
    private String description;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getImgUrl() {
        return imgUrl;
    }

    public void setImgUrl(String imgUrl) {
        this.imgUrl = imgUrl;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}

step3

  //声明Gson
    private Gson mGson = new Gson();

    //声明一个List来接收获得的JSon字符串
    private List<Banner> mBanner;

step4
在HttpGet或者HttpPost的 if (response.isSuccessful())判断下添加以下代码

 //尖括号内写入转换的类型,这里是一个List,并且是Banner的泛型
                Type type = new TypeToken<List<Banner>>(){}.getType();
                //进行Json到Gson的转换
                mBanner = mGson.fromJson(json,type);

到这里大家应该知道怎么用了吧。。。。。
好吧,还是讲完吧。。。。。

step5
使用增强型for循环取出封装在List里的mBanner

   if (mBanner != null){
            //使用for循环取出mBanner中的Json数据
            for (Banner banner : mBanner){
               这里面就可以banner .get某某某即可,想用到什么地方就用到什么地方
            }
        }

以上如有疏漏请指正

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值