在Objective C中从URL下载JSON的简单方法

时间:2016-11-29 04:16:20

标签: php mysql objective-c json

我使用php文件连接到MYSQL数据库,并以JSON格式从数据库返回一个表。

以下是显示JSON结果的PHP文件的链接:http://tradersdb.rf.gd/service1.php

我尝试了很多目标C代码的变体,将这个JSON格式的信息下载到一个客观的C数组中但没有成功。我希望此代码可用于将从MYSQL数据库读取的IOS应用程序。

我觉得这个问题好像是PHP文件和可能不正确的JSON格式,而不是任何Objective C代码。我在PHP文件中使用了json_encode()。感谢所有帮助。

1 个答案:

答案 0 :(得分:2)

在对您提供的JSON链接进行一些测试后,结果表明您的Web服务器确实在实际内容前面注入了HTML。此HTML旨在通过JavaScript设置cookie,然后自动加载实际数据。

问题不在于您的JSON,而在于您的Web框架。您将在下面看到该页面从您的根目录加载aes.js,这很可能用于cookie的解密/加密。

这是返回的HTML:

<html>
<body>
    <script type="text/javascript" src="/aes.js"></script>
    <script>
        function toNumbers(d) {
            var e = [];
            d.replace(/(..)/g, function(d) {
                e.push(parseInt(d, 16))
            });
            return e
        }

        function toHex() {
            for (var d = [], d = 1 == arguments.length && arguments[0].constructor == Array ? arguments[0] : arguments, e = "", f = 0; f < d.length; f++) e += (16 > d[f] ? "0" : "") + d[f].toString(16);
            return e.toLowerCase()
        }
        var a = toNumbers("f655ba9d09a112d4968c63579db590b4"),
            b = toNumbers("98344c2eee86c3994890592585b49f80"),
            c = toNumbers("db90ed280d6dd97b2c5a2f1352115adf");
        document.cookie = "__test=" + toHex(slowAES.decrypt(c, 2, a, b)) + "; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/";
        location.href = "http://tradersdb.rf.gd/service1.php?i=1";
    </script>
    <noscript>
        This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support
    </noscript>
</body>
</html>

它很可能是您服务器上的机器人保护插件。如果您可以控制服务器插件,则应禁用/删除它。唯一的其他选择是找到一个允许纯内容访问的更好的主机或找到一种方法来禁用此服务器设置。

<强>更新

看起来这是一个免费的托管服务器。我强烈建议你离开这个,你会发现你的代码有效。如果它是免费主机,您可能无法禁用它。在这种情况下,这个主机提供商对你没用,你应该搜索一个新的。