ByetHost 服务器使用 JSON 字符串传递 HTML 值“检查您的浏览器”:Android 应用程序问题
问题:
在 Android 应用程序中解析 JSON 字符串时,会传递 HTML 值。当使用 PHP 文件访问 ByetHost 服务器而不是其他服务器时,会出现此问题。
解决方案:
ByetHost 使用名为 testcookie-nginx-module 的安全模块,该模块添加了对 HTTP 请求进行额外的验证。该模块遵循两步流程:
Android应用程序实现:
要解决 Android 应用程序中的问题,请按照以下步骤操作:
<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中文网其他相关文章!