Fix json parse error

pull/102/head
FongMi 3 years ago
parent 65195fe48b
commit e2b22fd758
  1. 32
      app/src/main/java/com/fongmi/android/tv/bean/Parse.java
  2. 15
      app/src/main/java/com/fongmi/android/tv/net/OKHttp.java
  3. 33
      app/src/main/java/com/fongmi/android/tv/player/Players.java

@ -6,6 +6,8 @@ import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.annotations.SerializedName;
import java.util.List;
public class Parse {
@SerializedName("name")
@ -15,7 +17,7 @@ public class Parse {
@SerializedName("url")
private String url;
@SerializedName("ext")
private String ext;
private Ext ext;
public static Parse objectFrom(JsonElement element) {
return new Gson().fromJson(element, Parse.class);
@ -58,8 +60,16 @@ public class Parse {
this.url = url;
}
public String getExt() {
return TextUtils.isEmpty(ext) ? "" : ext;
public Ext getExt() {
return ext;
}
public boolean hasHeader() {
return getExt() != null && getExt().getHeader() != null;
}
public JsonElement getHeader() {
return getExt().getHeader();
}
@Override
@ -69,4 +79,20 @@ public class Parse {
Parse it = (Parse) obj;
return getName().equals(it.getName());
}
public static class Ext {
@SerializedName("flag")
private List<String> flag;
@SerializedName("header")
private JsonElement header;
public List<String> getFlag() {
return flag;
}
public JsonElement getHeader() {
return header;
}
}
}

@ -1,11 +1,11 @@
package com.fongmi.android.tv.net;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.Headers;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
import okhttp3.Request;
@ -34,16 +34,19 @@ public class OKHttp {
return mOk;
}
public static <T> Call newCall(T url) {
if (url instanceof HttpUrl) return get().client().newCall(new Request.Builder().url((HttpUrl) url).build());
else return get().client().newCall(new Request.Builder().url((String) url).build());
public static Call newCall(String url) {
return get().client().newCall(new Request.Builder().url(url).build());
}
public static <T> Call newCall(String url, HashMap<String, String> params) {
public static Call newCall(String url, Headers headers) {
return get().client().newCall(new Request.Builder().url(url).headers(headers).build());
}
public static Call newCall(String url, Map<String, String> params) {
return get().client().newCall(new Request.Builder().url(buildUrl(url, params)).build());
}
private static HttpUrl buildUrl(String url, HashMap<String, String> params) {
private static HttpUrl buildUrl(String url, Map<String, String> params) {
HttpUrl.Builder builder = Objects.requireNonNull(HttpUrl.parse(url)).newBuilder();
for (Map.Entry<String, String> entry : params.entrySet()) builder.addQueryParameter(entry.getKey(), entry.getValue());
return builder.build();

@ -11,6 +11,8 @@ import com.fongmi.android.tv.api.ApiConfig;
import com.fongmi.android.tv.bean.Parse;
import com.fongmi.android.tv.bean.Result;
import com.fongmi.android.tv.event.PlayerEvent;
import com.fongmi.android.tv.net.Callback;
import com.fongmi.android.tv.net.OKHttp;
import com.fongmi.android.tv.ui.custom.CustomWebView;
import com.fongmi.android.tv.utils.ResUtil;
import com.google.android.exoplayer2.ExoPlayer;
@ -23,11 +25,16 @@ import com.google.gson.JsonParser;
import org.greenrobot.eventbus.EventBus;
import java.io.IOException;
import java.util.Formatter;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import okhttp3.Call;
import okhttp3.Headers;
import okhttp3.Response;
public class Players implements Player.Listener {
private CustomWebView webView;
@ -126,11 +133,14 @@ public class Players implements Player.Listener {
private HashMap<String, String> getHeaders(Result result) {
HashMap<String, String> headers = new HashMap<>();
if (result.getHeader().isEmpty()) return headers;
JsonElement element = JsonParser.parseString(result.getHeader());
if (element.isJsonObject()) {
JsonObject object = element.getAsJsonObject();
for (String key : object.keySet()) headers.put(key, object.get(key).getAsString());
}
return getHeaders(JsonParser.parseString(result.getHeader()));
}
private HashMap<String, String> getHeaders(JsonElement element) {
HashMap<String, String> headers = new HashMap<>();
if (!element.isJsonObject()) return headers;
JsonObject object = element.getAsJsonObject();
for (String key : object.keySet()) headers.put(key, object.get(key).getAsString());
return headers;
}
@ -150,7 +160,18 @@ public class Players implements Player.Listener {
if (parse.getType() == 0) {
loadWebView(parse.getUrl() + result.getUrl());
} else if (parse.getType() == 1) {
Headers headers = new Headers.Builder().build();
if (parse.hasHeader()) headers = Headers.of(getHeaders(parse.getHeader()));
OKHttp.newCall(parse.getUrl() + result.getUrl(), headers).enqueue(new Callback() {
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
}
@Override
public void onFailure(@NonNull Call call, @NonNull IOException e) {
}
});
} else if (parse.getType() == 2) {
} else if (parse.getType() == 3) {

Loading…
Cancel
Save