Ошибка 404 для определенных файлов на некоторых устройствах после повторных посещений.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Ошибка 404 для определенных файлов на некоторых устройствах после повторных посещений.

Сообщение Anonymous »

Я запускаю веб-сервер в своей локальной сети, на котором размещается моя коллекция фильмов. У меня также есть специальное приложение для Android, работающее на Amazon Fire Stick. Недавно я работал над включением воспроизведения видео из внешних источников.
Приложение отправляет запросы на веб-сервер, например /externalsearch.php?title=(movie). Затем сайт вызывает веб-скребок Selenium Python и возвращает различную информацию в форме JSON. Все это прекрасно работает примерно 4 или 5 раз. После этого из приложения работают только запросы к чистым html-страницам. Все страницы php возвращают 404. Другие статические файлы, такие как /catalog.json, также возвращают 404. Перезапуск системы дает вам еще 4 или 5 запросов, прежде чем снова сломаться.
При посещении тех же страниц на моем компьютере все они работают отлично, несмотря ни на что. Однако посещение страниц на моем iPhone приводит к тому же результату. Единственное, что работает на
Вот некоторая дополнительная информация и вещи, которые я уже проверил. Использование памяти не является аномально высоким. Приложение корректно отключается. Проблема сохранялась при полностью новой установке Debian на сервере. Единственные другие службы, работающие на сервере, — это ssh для управления им и общий доступ к файлу smb в каталоге веб-страницы.
Ниже приведена одна из функций Kotlin, которая вызывает страницу, веб-страницу externalsearch.php и связанный с ней файл Python, при этом некоторые особенности скрыты.
функция Android

Код: Выделить всё

fun external(view : View)
{
val searchStringLower = searchString.lowercase()

CoroutineScope(Dispatchers.IO).launch {
var connection: HttpURLConnection? = null
try {
val urlString = "${MainActivity.settings.ip}/externalsearch.php?title=${URLEncoder.encode(searchStringLower, "UTF-8")}"
val url = URL(urlString)
connection = url.openConnection() as HttpURLConnection

connection.requestMethod = "GET"
connection.connectTimeout = 5000
connection.readTimeout = 15000

val responseCode = connection.responseCode
if (responseCode == HttpURLConnection.HTTP_OK) {
val response = connection.inputStream.bufferedReader().use { it.readText() }

val json = Json { ignoreUnknownKeys = true }
val results: List = json.decodeFromString(response)

lifecycleScope.launch(Dispatchers.Main) {
val adapter = ExternalItemAdapter(this@SearchActivity, results, 0)
searchGrid.adapter = adapter
}
} else {
println("Error: $responseCode")
}
} catch (e: Exception) {
e.printStackTrace()
} finally {
connection?.disconnect()
}
}
}
externalsearch.php /Scripts/externalsearch.py

Код: Выделить всё

import sys
import json
import re

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.firefox.service import Service

from bs4 import BeautifulSoup
from threading import Lock

if len(sys.argv) < 2:
print(json.dumps({"error": "Missing title parameter"}))
sys.exit(1)

title = sys.argv[1]

url = f"(url)"

options = webdriver.FirefoxOptions()
options.add_argument("--headless")
service = Service('/usr/local/bin/geckodriver')
driver = webdriver.Firefox(service=service, options=options)
results = []

try:
driver.get(url)

html = driver.page_source
soup = BeautifulSoup(html, "html.parser")

...
Scraping code
...

except Exception as e:
print(json.dumps({"error": str(e)}))
finally:
driver.quit()

print(json.dumps(results))
Я не совсем уверен, какая часть стека виновата в этой проблеме, поэтому я не включил никаких журналов. Если вы считаете, что что-то еще будет полезно, дайте мне знать.


Подробнее здесь: https://stackoverflow.com/questions/798 ... ted-visits
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»