为什么我的 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) )访问所需的 URL。
  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学习者快速成长!