使用 ByetHost 进行服务器端 Cookie 验证
问题
Android 应用程序正在解析 JSON来自 ByetHost 服务器的数据,但接收 HTML 值。之前正常运行后遇到此问题。
解决方案
ByetHost 已实现名为 testcookie-nginx-module 的反机器人安全模块。该模块使用两步过程验证 HTTP 请求:
初始请求:
后续请求:
HTML 值的原因:
当 Android 应用程序从 ByetHost 服务器请求数据时,它缺少必要的验证 cookie。结果,服务器返回 JavaScript 重定向,该重定向被应用程序视为 HTML。
Android 应用程序解决方案:
获取验证 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中文网其他相关文章!