Mengapa Apl Android Saya Menerima HTML Daripada JSON Apabila Mengakses Pelayan ByetHost?

DDD
Lepaskan: 2024-10-28 02:34:02
asal
543 orang telah melayarinya

Why Does My Android App Receive HTML Instead of JSON When Accessing a ByetHost Server?

Pelayan ByetHost Melepasi Nilai HTML 'Menyemak Penyemak Imbas Anda' dengan JSON String: Isu Apl Android

Masalah:

Semasa menghuraikan rentetan JSON dalam apl Android, nilai HTML sedang dihantar. Isu ini berlaku apabila mengakses pelayan ByetHost dengan fail PHP, tetapi bukan pelayan lain.

Penyelesaian:

ByetHost menggunakan modul keselamatan yang dipanggil testcookie-nginx-module yang menambah lapisan tambahan pengesahan kepada permintaan HTTP. Modul ini mengikuti proses dua langkah:

  1. Permintaan Awal: Permintaan HTTP pertama diubah hala ke skrip yang menghasilkan kuki pengesahan yang mengandungi kunci AES.
  2. Permintaan Seterusnya: Pelanggan menghantar kuki pengesahan dalam permintaan seterusnya, yang modul mengesahkan untuk membenarkan akses kepada URL yang dikehendaki.

Pelaksanaan Apl Android:

Untuk menyelesaikan isu dalam apl Android, ikut langkah berikut:

  1. Dapatkan Kuki Pengesahan: Gunakan penyemak imbas web (cth., Google Chrome ) untuk mengakses URL yang dikehendaki.
  2. Dapatkan Kunci Kuki daripada Penyemak Imbas: Gunakan tetapan Chrome untuk menavigasi ke "Tetapan Kandungan" dan cari "__test" di bawah kuki tapak web. Salin nilai "kandungan," "laluan," dan "tamat tempoh."
  3. Tambah Kuki pada Permintaan Android: Ubah suai kelas JSONfunctions anda untuk menambah kuki pengesahan pada permintaan HTTP:
<code class="java">try {
    if (post == "POST") {
        HttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(loginUrl);
        httpPost.setEntity(new UrlEncodedFormEntity(para));
        httpPost.setHeader("User-Agent", "Mozilla/5.0 ...");
        httpPost.addHeader("Cookie", "__test=" + cookieContent + "; expires=" + cookieExpires + "; path=" + cookiePath);
        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();
    } else if (post == "GET") {
        HttpClient httpClient = new DefaultHttpClient();
        String paramString = URLEncodedUtils.format(para, "utf-8");
        loginUrl += "?" + paramString;
        HttpGet httpGet = new HttpGet(loginUrl);
        httpGet.addHeader("Cookie", "__test=" + cookieContent + "; expires=" + cookieExpires + "; path=" + cookiePath);
        HttpResponse httpResponse = httpClient.execute(httpGet);
        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();
    }
}</code>
Salin selepas log masuk

Nota: Gantikan cookieContent, cookieExpires dan cookiePath dengan nilai yang anda perolehi daripada penyemak imbas.

Pengubahsuaian ini akan memastikan bahawa apl Android anda dihantar kuki pengesahan dengan setiap permintaan HTTP, memintas ubah hala HTML awal dan membenarkannya untuk mendapatkan semula data JSON.

Atas ialah kandungan terperinci Mengapa Apl Android Saya Menerima HTML Daripada JSON Apabila Mengakses Pelayan ByetHost?. 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!