【问题标题】:Web service getting <br /> instead of JSONWeb 服务获取 <br /> 而不是 JSON
【发布时间】:2012-11-09 04:42:35
【问题描述】:

我正在开发一个简单的 PHP 页面来生成 JSON 文本,这样我就可以测试我的应用程序(实际的服务器正在由另一个人开发),但我遇到了一个奇怪的错误。我的 PHP 页面只有这个:

<?php
header('Content-type: application/json');
$trip = array ('trip' => array  ( array ('departureStation' => $_GET['from'],
                'arriveStation' => $_GET['to'],
                'departureTime' => '08:00',
                'arriveTime' => '11:00',
                'date' => $_GET['date'],
                'duration' => '3',
                'distance' => '80',
                'price' => '5',
                'changeLine' => false,
                'waitTime' => '0',
                'passengers' => '13'),
                array ('departureStation' => $_GET['from'],
                'arriveStation' => $_GET['to'],
                'departureTime' => '11:00',
                'arriveTime' => '14:00',
                'date' => $_GET['date'],
                'duration' => '3',
                'distance' => '80',
                'price' => '5',
                'changeLine' => false,
                'waitTime' => '0',
                'passengers' => '29'),
                array ('departureStation' => $_GET['from'],
                'arriveStation' => $_GET['to'],
                'departureTime' => '17:00',
                'arriveTime' => '20:00',
                'date' => $_GET['date'],
                'duration' => '3',
                'distance' => '80',
                'price' => '5',
                'changeLine' => false,
                'waitTime' => '0',
                'passengers' => '45')));

echo json_encode($trip);
?>

我检查并返回一个有效的 JSON,但是当我这样做时

URL url = new URL("http://xxx.xxx.x.xx/consult.php" + param);

con = (HttpURLConnection) url.openConnection();
con.setReadTimeout(10000);      /* milliseconds */
con.setConnectTimeout(15000);   /* milliseconds */
con.setRequestMethod("GET");
con.setDoInput(true);

con.connect();

BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8" ));
payload = reader.readLine();

payload 变量只得到一个&lt;br /&gt;

我知道那是 PHP 上的东西,因为我在页面上输入,复制输出,再次返回 PHP 代码并输入

$echo 'json_copied_from_the_page_here';

它成功了,有效负载正在正确读取页面。所以我很好奇,为什么会这样?

【问题讨论】:

  • 你应该检查例如使用wireshark和模拟器你正在下载的东西。

标签: php android bufferedreader


【解决方案1】:

您只读取一行,输出的其余部分应在该行之后。

试试这个

编辑:不能在字符串上使用 +=。

String temp = null;
String output = "";
while ((temp = reader.readLine()) != null) {
    output = output + temp;
} // end while

如果有效,请查看输出。

【讨论】:

  • 是的 应该 如果您有错误
    将在默认 php 调试格式的错误消息之前打印,这正是这里发生的情况。我可能错了..让我们看看。
  • 是的。无论如何都不应该实例化有效载荷吗? String payload = .. 或类似的东西?
  • 我猜他在发布代码块之前已经这样做了,否则他将无法读取 br,但第一个 readline 会启动字符串。
  • 我试着做 +=。我的活动只是冻结了,但没有抛出异常,很奇怪。无论如何,输出假设只是一行。所以我想这样做没有任何意义。
  • 你可以调试应用程序吗?我怀疑 PHP 脚本抛出了异常。
猜你喜欢
  • 2016-01-15
  • 1970-01-01
  • 1970-01-01
  • 2012-02-26
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-20
相关资源
最近更新 更多