Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah apl Android saya menerima HTML dan bukannya data JSON daripada pelayan ByetHost, dan bagaimanakah saya boleh membetulkannya?

Mengapakah apl Android saya menerima HTML dan bukannya data JSON daripada pelayan ByetHost, dan bagaimanakah saya boleh membetulkannya?

DDD
DDDasal
2024-10-28 03:44:31740semak imbas

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

Pengesahan Kuki Sebelah Pelayan dengan ByetHost

Isu

Apl Android sedang menghuraikan JSON data daripada pelayan ByetHost tetapi sebaliknya menerima nilai HTML. Isu ini dihadapi selepas berfungsi dengan betul sebelum ini.

Penyelesaian

ByetHost telah melaksanakan modul keselamatan anti-bot yang dipanggil testcookie-nginx-module. Modul ini mengesahkan permintaan HTTP menggunakan proses dua langkah:

  1. Permintaan Awal:

    • Modul menjana ubah hala JavaScript yang mencipta kuki pengesahan dengan kunci AES.
    • Ia mengubah hala pelanggan ke URL JSON sebenar.
  2. Permintaan Seterusnya:

    • Kuki pengesahan digunakan untuk mengesahkan kunci AES dan membenarkan akses kepada data JSON.

Punca Nilai HTML:

Apabila apl Android meminta data daripada pelayan ByetHost, ia tidak mempunyai kuki pengesahan yang diperlukan. Akibatnya, pelayan mengembalikan ubah hala JavaScript, yang dianggap sebagai HTML oleh apl.

Penyelesaian untuk Apl Android:

Dapatkan Kuki Pengesahan :

  1. Akses URL JSON sekali menggunakan penyemak imbas web seperti Chrome.
  2. Salin nilai kuki "__test" daripada alatan pembangun penyemak imbas.

Tetapkan Kuki dalam Apl Android:

Tambahkan kod berikut pada permintaan HTTP dalam apl Android anda:

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

Ganti "__test =THE_CONTENT_OF_YOUR_COOKIE_HERE" dengan nilai cookie sebenar.

Contoh Fail PHP:

<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>

Atas ialah kandungan terperinci Mengapakah apl Android saya menerima HTML dan bukannya data JSON daripada pelayan ByetHost, dan bagaimanakah saya boleh membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn