我正在使用 php 文件连接到 MYSQL 数据库并以 JSON 格式从数据库返回表。
以下是显示 JSON 结果的 PHP 文件的链接:http://tradersdb.rf.gd/service1.php
我尝试了多种 Objective C 代码变体来将此 JSON 格式的信息下载到 Objective C 数组中,但没有成功。我希望这段代码能够在 IOS 应用程序中使用,该应用程序将从 MYSQL 数据库中读取数据。
但是,我觉得问题在于 PHP 文件和潜在的不正确的 JSON 格式,而不是任何 Objective C 代码。我在 PHP 文件中使用了 json_encode() 。感谢所有帮助。
最佳答案
对您提供的 JSON 链接进行一些测试后,发现您的 Web 服务器确实在实际内容前面注入(inject)了 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>
这很可能是您服务器上的机器人保护插件。如果您可以控制服务器插件,则应该禁用/删除它。唯一的其他选择是找到一个允许纯内容访问的更好的主机,或者找到一种禁用此服务器设置的方法。
更新:
这似乎是一个免费的托管服务器。我强烈建议你放弃这个,你会发现你的代码可以工作。如果它是免费主机,您可能无法禁用它。在这种情况下,该主机提供商对您来说毫无用处,您应该寻找新的主机提供商。
关于php - 在 Objective C 中从 URL 下载 JSON 的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40857717/