为什么我的 Android 应用程序从 ByetHost 服务器接收 HTML 而不是 JSON 数据,如何修复它?

DDD
发布: 2024-10-28 03:44:31
原创
634 人浏览过

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

使用 ByetHost 进行服务器端 Cookie 验证

问题

Android 应用程序正在解析 JSON来自 ByetHost 服务器的数据,但接收 HTML 值。之前正常运行后遇到此问题。

解决方案

ByetHost 已实现名为 testcookie-nginx-module 的反机器人安全模块。该模块使用两步过程验证 HTTP 请求:

  1. 初始请求:

    • 该模块生成一个 JavaScript 重定向,该重定向创建带有 AES 密钥的验证 cookie。
    • 它将客户端重定向到实际的 JSON URL。
  2. 后续请求:

    • 验证 cookie 用于验证 AES 密钥并允许访问 JSON 数据。

HTML 值的原因:

当 Android 应用程序从 ByetHost 服务器请求数据时,它缺少必要的验证 cookie。结果,服务器返回 JavaScript 重定向,该重定向被应用程序视为 HTML。

Android 应用程序解决方案:

获取验证 Cookie :

  1. 使用 Chrome 等网络浏览器访问 JSON URL。
  2. 从浏览器的开发人员工具复制“__test”cookie 的值。

在 Android 应用中设置 Cookie:

将以下代码添加到 Android 应用中的 HTTP 请求中:

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

替换“__test” =THE_CONTENT_OF_YOUR_COOKIE_HERE" 与实际 cookie 值。

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>
登录后复制

以上是为什么我的 Android 应用程序从 ByetHost 服务器接收 HTML 而不是 JSON 数据,如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!