Как получить данные из URL-адреса, который не является объектом JSON в AndroidView ListView?
У меня есть этот URL, и я хочу получить все данные, присутствующие здесь, в виде списка Android, я знаю только, как извлечь данные из объекта JSON, но здесь я даже не знаю формат этих данных, присутствующих в URL.
Формат URL:
tvg-logo = URL-адрес логотипа chanel
group-title = категория, в которой вам нужно отобразить канал (только для фильма, а не для ТВ)
После "," у вас есть название канала
И после имени у вас есть URL видео
Как я могу проанализировать свои данные из URL, чтобы я мог сделать представление списка следующим образом:
6 ответов
Если вы используете модернизацию в качестве сетевой библиотеки, вы можете передать "ResponseBody" в функцию обратного вызова API. В методе onSuccess мы получим тело и используем следующий код.
Класс интерфейса:
Call<ResponseBody> yourFuncationName();
ResponseBody data = (ResponseBody) model.body();
String json = getStringData(data.byteStream());
Функция
public String getStringData(InputStream inputStream) {
BufferedReader r = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder total = new StringBuilder();
String line;
try {
while ((line = r.readLine()) != null) {
total.append(line).append('\n');
}
} catch (IOException e) {
e.printStackTrace();
}
return total.toString();
}
Может быть, это будет полезно для вас.
Эта функция будет получать данные из URL, и вы можете разделить данные в соответствии с вашими требованиями и заполнить пользовательский интерфейс.
void fetchDataFromUrl() {
try {
URL oracle = new URL("http://cinecosta.com/api_tv.php?pass=yojeju123");
URLConnection yc = oracle.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(
yc.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
System.out.println(inputLine);
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Я думаю, вы должны разделить текст строки специальными символами. и держать их в массиве. например, специальный символ может быть "[пробел]" или "," или "#". Я надеюсь помочь вам
Попробуйте с приведенным ниже кодом, здесь я извлекаю только URL из ответа API
String strData = "#EXTM3U #EXTINF:-1 tvg-logo=\"http://www.cinecosta.com/image-appletv/tv/tf1-tv.png\" tvg-categorie=\"TV\",TF1 http://217.182.164.103:25461/live/YnAmpNBQUX/YUCgme6CXS/314.ts #EXTINF:-1 tvg-logo=\"http://www.cinecosta.com/image-appletv/tv/france2.png\" tvg-categorie=\"TV\",France 2 http://217.182.164.103:25461/live/YnAmpNBQUX/YUCgme6CXS/315.ts #EXTINF:-1 tvg-logo=\"http://www.cinecosta.com/image-appletv/tv/france3.png\" tvg-categorie=\"TV\",France 3 http://217.182.164.103:25461/live/YnAmpNBQUX/YUCgme6CXS/316.ts #EXTINF:-1 tvg-logo=\"http://www.cinecosta.com/image-appletv/tv/france4.png\" tvg-categorie=\"TV\",France 4 http://217.182.164.103:25461/live/YnAmpNBQUX/YUCgme6CXS/317.ts #EXTINF:-1 tvg-logo=\"http://www.cinecosta.com/image-appletv/tv/france5.png\" tvg-categorie=\"TV\",France 5 http://217.182.164.103:25461/live/YnAmpNBQUX/YUCgme6CXS/318.ts";
private void convertDataToArray() {
String[] splitArray = strData.split("#EXTINF:-");
ArrayList<String> arrstrUrl = new ArrayList<String>();
ArrayList<String> arrstrMainUrl = new ArrayList<String>();
ArrayList<String> arrstrCategory = new ArrayList<String>();
ArrayList<String> arrstrName = new ArrayList<String>();
for (int i = 1; i < splitArray.length; i++) {
System.out.println("Final=>" + splitArray[i]);
arrstrUrl.add(splitArray[i].split("1 tvg-logo=")[1].split(" ")[0]);
arrstrMainUrl.add("http" + splitArray[i].split("1 tvg-logo=")[1].split("tvg-categorie=")[1].split("http")[1]);
arrstrName.add(splitArray[i].split("1 tvg-logo=")[1].split("tvg-categorie=")[1].split(",")[0]);
arrstrCategory.add(splitArray[i].split("1 tvg-logo=")[1].split("tvg-categorie=")[1].split(",")[1].split("http")[0]);
}
System.out.println("Final Image=>" + arrstrUrl.toString());
System.out.println("Final Main=>" + arrstrMainUrl.toString());
System.out.println("Final Name=>" + arrstrName.toString());
System.out.println("Final Category=>" + arrstrCategory.toString());
}
Таким образом, вы можете проанализировать данные и обновить свой список.
Примечание:- Вам необходимо написать собственную логику для анализа этих данных, проверяя шаблон данных.
Результат кажется легко разобрать на самом деле. Просто посмотрите на шаблон.#SOMETHING tvg-logo = "logo" tvg -ategorie="что-то"
Используйте регулярные выражения для разделения нужного вам шаблона. Regex
Решение для этого:
Либо вы можете скопировать данные из библиотек Python, таких как Scrapy или Beautiful Soup, а затем преобразовать их в JSON и читать с Android.
Разберите html с помощью jsoup lib ( https://jsoup.org/) и смоделируйте данные в желаемом формате.