是否有任何用于将 JSON 对象传递给 android 的 PHP 配置?
Posted
技术标签:
【中文标题】是否有任何用于将 JSON 对象传递给 android 的 PHP 配置?【英文标题】:Is there any PHP configuration for passing JSON object to android? 【发布时间】:2014-11-23 13:16:21 【问题描述】:我正在尝试将 JSON 对象从 php Web 服务发送到我的 android 应用程序。最初为了检查我的 PHP 文件是否返回 JSON 值,我在浏览器中输入了 url 并获得了所需的正确值。为了检查我的 android 代码,我使用正确的主机 url 执行了代码,但在 logcat 中只得到了“[]”作为输出。出于调试目的,我在 hosthinger.com 中创建了一个免费的网络托管和数据库。这次完全相同的 php 和 android 代码运行良好,给了我想要的输出。我们为确保没有错误所做的事情清单:
-
检查了两个主机中数据库的排序规则 (utf8_unicode_ci)
两个主机都在浏览器中返回了正确的值。
JSON 对象是否有任何特定的 PHP 配置?还是我缺少任何标题信息? 我不明白为什么代码在一个主机上运行良好,而在另一个主机上却不行。
这是我的 PHP 代码:
<?php
include ('mysqlconnection.php');
$mobile = $_POST['mobile_number'];
$output = array();
$query="select name,status from content;";
$sql = mysql_query($query);
while($row = mysql_fetch_assoc($sql))
$output[]= array( 'imagename' => $row['name'], 'status' => $row['status'] );
echo json_encode($output);
?>
【问题讨论】:
检查您的数据库连接。您的代码似乎正确。 【参考方案1】:可能你需要在你的 php 中指定 content.type:
header('Content-Type: application/json');
【讨论】:
我已经尝试过了。上面给出的代码在 hosthinger 托管中完美运行,但在我的服务器中却不行。【参考方案2】:您应该使用带有application/json
标头的output buffer,而不是仅仅回显json_encode()
输出。
当您使用 MySQL 时,某些服务器往往会出错,请检查配置。并且不要使用mysql_*
函数,而是使用PDO 或至少mysqli。
您应该检查您的代码中可能存在的错误,检查您的连接,查询结果等,然后您可以生成一个 JSON 来提供输出。
确保您的服务器的 error_reporting
设置为 0
。有时服务器会打印出警告、通知和错误消息,这些消息会扰乱您的输出。
【讨论】:
如果有任何错误或警告的可能性,我不应该在浏览器中得到正确的 JSON 值吗?对吗? 这段代码有可能会失败,在浏览器上有正确的输出意味着它还没有失败:) 你在开发者工具中检查过你的输出吗?也许浏览器并没有向您显示所有内容。【参考方案3】:您可以使用 Google Chrome 的 PostMan 扩展程序来查看您的网络服务的结果。它还将输出显示为 json 解析。
【讨论】:
以上是关于是否有任何用于将 JSON 对象传递给 android 的 PHP 配置?的主要内容,如果未能解决你的问题,请参考以下文章
Python - 将 JSON 对象传递给函数时附加到 JSON 对象的附加“成员”
Javascript ajax 将动态创建的 json 对象传递给 Web 服务