為什麼我的 Android 應用程式在訪問 ByetHost 伺服器時收到的是 HTML 而不是 JSON?

DDD
發布: 2024-10-28 02:34:02
原創
543 人瀏覽過

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

ByetHost 伺服器使用JSON 字串傳遞HTML 值「檢查您的瀏覽器」:Android 應用程式問題

問題:

在Android 應用程式中解析JSON 字串時,會傳遞HTML 值。當使用 PHP 檔案存取 ByetHost 伺服器而不是其他伺服器時,會發生此問題。

解決方案:

ByetHost 使用名為 testcookie-nginx-module 的安全模組,該模組新增了對 HTTP 請求進行額外的驗證。此模組遵循兩步驟流程:

  1. 初始請求: 第一個 HTTP 請求被重新導向到產生包含 AES 金鑰的驗證 cookie 的腳本。
  2. 後續請求:客戶端在後續請求中發送驗證cookie,模組驗證該cookie以允許存取所需的URL。

Android應用程式實作:

要解決Android 應用程式中的問題,請依照下列步驟操作:

  1. 檢索驗證Cookie: 使用網頁瀏覽器(例如​​Google Chrome) )存取所需的網址。
  2. 從瀏覽器取得 Cookie 金鑰:使用 Chrome 的設定導覽至「內容設定」並在網站的 cookie 下搜尋「__test」。複製「內容」、「路徑」和「過期」的值。
  3. 將Cookie 新增至Android 要求: 修改JSONfunctions 類別以將驗證cookie 新增至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>
登入後複製

>將cookieContent、cookieExpires 和cookiePath 替換為您從瀏覽器取得的值。

此修改將確保您的 Android 應用程式發送每個 HTTP 請求的驗證 cookie,繞過初始 HTML 重定向並允許它檢索 JSON 資料。

以上是為什麼我的 Android 應用程式在訪問 ByetHost 伺服器時收到的是 HTML 而不是 JSON?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!