我用的是
然后都是用Gson解析的
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;
}
}