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

DDD
Lepaskan: 2024-10-28 03:44:31
asal
634 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!