应用程序可以设置HTTP请求,通过HTTPS接收json吗?

时间:2018-01-28 18:30:47

标签: android .htaccess

我已经有一个原型Android应用程序坐在我的手机上多年,并用它来向人们演示一些东西;它工作了100次。该应用程序从公共服务器上的JSON文件中获取数据,并在地图上呈现它,没什么特别的。

现在我遇到了问题,数据不再加载了!

服务器仍在运行,我可以直接在Web浏览器中访问JSON文件,它运行正常。

除了最近我重新配置服务器以使用htaccess规则将所有HTTP流量转发到HTTPS之外,所有其他都是相同的。这是针对服务器和同一域的另一个项目。

这可能是罪魁祸首吗?一个Android应用程序,如果对HTTP网址发出硬编码请求,是否存在问题,它会以HTTPS形式发送响应?

我会自己跟踪这个......但是......我丢失了应用程序的源代码......几个月前我意识到这一点,并且知道某天会有问题。

这是将所有HTTP流量转发到HTTPS的特定htaccess规则。

是否可以对根目录中的特定.json文件进行例外处理(mywebsite.com/data.json)?

RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.mywebsite.com/$1 [R,L]

2 个答案:

答案 0 :(得分:0)

您是否可以尝试制作另一个Android应用程序进行测试,并尝试使用HTTP协议加载JSON,如果失败,则使用HTTPS协议。也是,强迫所有http - > https可能会导致问题(尽管在Web浏览器中看似正常)。如果HTTP失败,只需用HTTPSURLConeection替换所有HTTPURLConnection并打印String结果。

try {

            String result = "";

            URL url = new URL(YOUR_URL);

            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            InputStream inputStream = connection.getInputStream();
            InputStreamReader reader = new InputStreamReader(inputStream);
            int i = reader.read();

            while(i != -1){

                result += (char) i;
                i = reader.read();
            }

        } catch (Exception e) {

            e.printStackTrace();
        }

答案 1 :(得分:0)

找到答案......

http-to-https转发的罪魁祸首。

我为我的应用程序的data.json设置了一个例外(将其保留为HTTP),现在Android应用程序正常工作。

RewriteCond %{SERVER_PORT} 80
RewriteCond %{THE_REQUEST} !/data.json [NC]
RewriteRule ^(.*)$ https://www.mywebsite.com/$1 [R,L]