Heim  >  Artikel  >  Backend-Entwicklung  >  Warum empfängt meine Android-App HTML- statt JSON-Daten von einem ByetHost-Server und wie kann ich das Problem beheben?

Warum empfängt meine Android-App HTML- statt JSON-Daten von einem ByetHost-Server und wie kann ich das Problem beheben?

DDD
DDDOriginal
2024-10-28 03:44:31635Durchsuche

Why is my Android app receiving HTML instead of JSON data from a ByetHost server, and how can I fix it?

Serverseitige Cookie-Validierung mit ByetHost

Problem

Eine Android-App analysiert JSON Daten von einem ByetHost-Server, empfängt aber stattdessen HTML-Werte. Dieses Problem tritt auf, nachdem es zuvor ordnungsgemäß funktioniert hat.

Lösung

ByetHost hat ein Anti-Bot-Sicherheitsmodul namens testcookie-nginx-module implementiert. Dieses Modul validiert HTTP-Anfragen mithilfe eines zweistufigen Prozesses:

  1. Erste Anfrage:

    • Das Modul generiert eine JavaScript-Umleitung, die erstellt ein Validierungscookie mit einem AES-Schlüssel.
    • Es leitet den Client zur tatsächlichen JSON-URL weiter.
  2. Nachfolgende Anfragen:

    • Das Validierungscookie wird verwendet, um den AES-Schlüssel zu validieren und den Zugriff auf die JSON-Daten zu ermöglichen.

Ursache der HTML-Werte:

Wenn die Android-App Daten vom ByetHost-Server anfordert, fehlt ihr das erforderliche Validierungscookie. Als Ergebnis gibt der Server die JavaScript-Umleitung zurück, die von der App als HTML behandelt wird.

Lösung für Android-App:

Besorgen Sie sich das Validierungs-Cookie :

  1. Greifen Sie einmal mit einem Webbrowser wie Chrome auf die JSON-URL zu.
  2. Kopieren Sie den Wert des Cookies „__test“ aus den Entwicklertools des Browsers.

Setzen Sie das Cookie in der Android-App:

Fügen Sie den folgenden Code zur HTTP-Anfrage in Ihrer Android-App hinzu:

<code class="java">httpPost.addHeader("Cookie", "__test=THE_CONTENT_OF_YOUR_COOKIE_HERE; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/");</code>

Ersetzen Sie „__test =THE_CONTENT_OF_YOUR_COOKIE_HERE" mit dem tatsächlichen Cookie-Wert.

PHP-Dateibeispiel:

<code class="php"><?php
// Database connection
$result = mysqli_query($con, "SELECT * FROM `pj_medionline_mst_stockist` ORDER BY `ID` ASC");

$response = array();
$posts = array();
while ($row = mysqli_fetch_array($result)) {
    $posts[] = array(
        'id' => $row["ID"],
        'stkcode' => $row["stkcode"],
        'stkname' => $row["ComName"],
        'operatorid' => $row["operatorid"],
        'password' => $row["Password"]
    );
}
$response['stokist'] = $posts;
print(json_encode($response));
?></code>

Das obige ist der detaillierte Inhalt vonWarum empfängt meine Android-App HTML- statt JSON-Daten von einem ByetHost-Server und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn