第三篇 关于网络请求

我用的是

AsyncTask

@Override
    protected String doInBackground(String... strings) {
            OkHttpClient client = new OkHttpClient();
            Request request = new Request.Builder()
                    // 指定访问的服务器地址是电脑本机
                    .url(strings[0])
                    .build();

            Response response = null;
            try {
                response = client.newCall(request).execute();
                String responseData = response.body().string();
                Log.d("Lin", "responseData:   ++" + responseData);
                if (isChange != true) {
                    parseJSONWithGSON(responseData);
                } else {
                    if (strings[1].equals(hotword)){
                        Log.d("Lin","热词");
                        gsonHotWord(responseData);
                    }else if (strings[1].equals(famous)){
                        gsonFamous(responseData);
                    }else if (strings[1].equals(xingzuo)){
                        gsonXing(responseData);
                    }
                    else {
                        parseJsonChar(responseData);
                    }
                }
            } catch (IOException e) {
            }
        return null;
    }
 private void parseJSONWithGSON(String responseData) {
        String weatherContent = fromJson.GsonFromJson(responseData, "HeWeather6");
        if (weatherContent.length()>50) {
            Log.d("Lin","天气执行了");
            Gson gson = new Gson();
            HeWeather6 app = gson.fromJson(weatherContent, HeWeather6.class);
            weather = "天气状况" + app.now.cond_txt + "\n" + app.now.wind_dir + "风" + "  " + app.now.wind_sc + "级" +
                    "\n温度:" + app.now.tmp + "度";
            //Log.d("Lin", "app.now" + app.now.wind_sc + app.now.cloud + "");
        }else {

            Log.d("Lin", result);
            if (result.equals("热点")) {
                isChange=true;
                mUrl="http://api.avatardata.cn/ActNews/LookUp?key=303d5931f69d4b5fba0bb33abf5961e0";
                doInBackground(mUrl,hotword);
            } else if (result.equals("名言")) {
                isChange=true;
                mUrl="http://api.avatardata.cn/MingRenMingYan/Random?key=e3d1f583b4544f11875f68f00d2bba6a";
                doInBackground(mUrl,famous);
            }else if (result.equals("白羊座")||result.equals("天蝎座")
                    ||result.equals("双子座")||result.equals("处女座")
                    ||result.equals("巨蟹座")||result.equals("狮子座")
                    ||result.equals("天秤座")||result.equals("射手座")
                    ||result.equals("金牛座")||result.equals("双鱼座")
                    ||result.equals("水瓶座")||result.equals("摩羯座")){
                isChange=true;
                mUrl="http://api.avatardata.cn/Constellation/Query?key=40e2343e0bc4419db867b3d72573adaa&consName="+result+"&type=today";
                doInBackground(mUrl,xingzuo);
            }
            else {
                String s = fromJson.setParams(result);
                isChange = true;
                doInBackground(s, "chat");
                //Log.d("Lin", "changeUrl");
            }
        }
    }
    private void parseJsonChar(String responseData) {
        Gson gson1 = new Gson();
            Chat chat = gson1.fromJson(responseData, Chat.class);
           // Log.d("Lin", chat.text);
            weather = chat.text;
    }
    private void gsonHotWord(String responseData) {
        Gson gson2 = new Gson();
        HotWord hotWord1 = gson2.fromJson(responseData, HotWord.class);
        if (hotWord1.error_code.equals("0")) {
            StringBuffer stringBuffer=new StringBuffer();
            for (int i=0;i<hotWord1.forecastList.size();i++){
                stringBuffer.append(hotWord1.forecastList.get(i)+"\n");
            }
            weather=stringBuffer.toString();
        }else {
            weather="出现了错误:"+hotWord1.reason;
        }
    }
    private void gsonFamous(String responseData) {
        Gson gson2 = new Gson();
        Famous famous = gson2.fromJson(responseData, Famous.class);
        weather=famous.result.famous_name+"\n"+famous.result.famous_saying;
    }
    private void gsonXing(String responseData) {
        Gson gson2 = new Gson();
        Xing xing = gson2.fromJson(responseData, Xing.class);
        if (xing.error_code.equals("0")) {
            weather=result+"    :"+xing.result.datetime+"运势\n"+
                    "总体运势:"+xing.result.all+"\n工作运势:"+xing.result.work+"\n爱情运势:"+xing.result.love+"\n金钱运势"+xing.result.money+
                    "\n健康运势:"+xing.result.health+"\n今日幸运数字:"+xing.result.number
                    +"\n今日幸运颜色:"+xing.result.color+"\n今日好友星座:"+xing.result.QFriend+"\n"+xing.result.summary;
        }else {
            weather="出现了错误:"+xing.reason;
        }
    }

然后都是用Gson解析的

package com.example.admin.tim.Gson;

import com.google.gson.annotations.SerializedName;

/**
 * Created by Administrator on 2017/12/8 0008.
 */
public class Basic
{
    @SerializedName("cid")
    public String cid;
    @SerializedName("location")
    public String location;
    @SerializedName("parent_city")
    public String parent_city;
    @SerializedName("admin_area")
    public String admin_area;
    @SerializedName("cnty")
    public String cnty;
    @SerializedName("lat")
    public String lat;
    @SerializedName("lon")
    public String lon;
    @SerializedName("tz")
    public String tz;
}


package com.example.admin.tim.Gson;

import com.google.gson.annotations.SerializedName;

/**
 * Created by Administrator on 2017/12/9 0009.
 */

public class Chat {
    @SerializedName("code")
    public String code;
    @SerializedName("text")
    public String text;
}

package com.example.admin.tim.Gson;

import com.google.gson.annotations.SerializedName;

/**
 * Created by Administrator on 2017/12/9 0009.
 */

public class Famous {
    @SerializedName("error_code")
    public String error_code;

    @SerializedName("reason")
    public String reason;
    @SerializedName("result")
    public result result;
    public class result {
        @SerializedName("famous_name")
        public String famous_name;
        @SerializedName("famous_saying")
        public String famous_saying;
    }

}

package com.example.admin.tim.Gson;

/**
 * Created by Administrator on 2017/12/8 0008.
 */
public class HeWeather6
{
    public String status;

    public Basic basic;

    public Update update;

    public Now now;
}

package com.example.admin.tim.Gson;

import com.google.gson.annotations.SerializedName;

import java.util.List;

/**
 * Created by Administrator on 2017/12/9 0009.
 */

public class HotWord {
    @SerializedName("result")
    public List<String> forecastList;
    @SerializedName("error_code")
    public String error_code;
    @SerializedName("reason")
    public String reason;
}

package com.example.admin.tim.Gson;

import com.google.gson.annotations.SerializedName;

/**
 * Created by Administrator on 2017/12/8 0008.
 */

public class Now
{
    @SerializedName("cloud")
    public String cloud;
    @SerializedName("cond_code")
    public String cond_code;
    @SerializedName("cond_txt")
    public String cond_txt;
    @SerializedName("fl")
    public String fl;
    @SerializedName("hum")
    public String hum;
    @SerializedName("pcpn")
    public String pcpn;
    @SerializedName("pres")
    public String pres;
    @SerializedName("tmp")
    public String tmp;
    @SerializedName("vis")
    public String vis;
    @SerializedName("wind_deg")
    public String wind_deg;
    @SerializedName("wind_dir")
    public String wind_dir;
    @SerializedName("wind_sc")
    public String wind_sc;
    @SerializedName("wind_spd")
    public String wind_spd;
}


package com.example.admin.tim.Gson;

import com.google.gson.annotations.SerializedName;

/**
 * Created by Administrator on 2017/12/8 0008.
 */

public class Update
{
    @SerializedName("loc")
    public String loc;
    @SerializedName("utc")
    public String utc;
}

package com.example.admin.tim.Gson;

import com.google.gson.annotations.SerializedName;

/**
 * Created by Administrator on 2017/12/9 0009.
 */

public class Xing {
    @SerializedName("error_code")
    public String error_code;

    @SerializedName("reason")
    public String reason;
    @SerializedName("result2")
    public String result2;
    @SerializedName("result1")
    public result result;
    public class result {
        @SerializedName("resultcode")
        public String resultcode;
        @SerializedName("error_code")
        public String error_code;
        @SerializedName("name")
        public String name;
        @SerializedName("datetime")
        public String datetime;
        @SerializedName("date")
        public String date;
        @SerializedName("all")
        public String all;
        @SerializedName("color")
        public String color;
        @SerializedName("health")
        public String health;
        @SerializedName("love")
        public String love;
        @SerializedName("money")
        public String money;
        @SerializedName("number")
        public String number;
        @SerializedName("QFriend")
        public String QFriend;
        @SerializedName("summary")
        public String summary;
        @SerializedName("work")
        public String work;

    }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值