0

好的,几天前,我用 Java 编写了一段代码,将 post 请求发送到 PHP 文件,以便将一些数据存储在 MySQL 数据库中并接收简单的 json_encode() 字符串,例如来自 PHP 的“error_101”响应,它工作正好。昨天我重新安装了我的 XAMPP,因为我在 openssl PHP 扩展方面遇到了一些问题,现在我的 json_encode() 响应都没有返回值。我检查了 phpinfo() ,它说启用了 json 支持。提到从 JAVA 发送到 PHP 的值也是 JSON 对象,并且 json_decode() 工作得很好!

这是我将响应从 PHP 发送到 JAVA 的代码:

<?php 
    header('Content-type: application/json');
    echo json_encode("error_101");
?>

这是在 JAVA 中获取响应的代码

HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 10000);
HttpConnectionParams.setSoTimeout(httpParams, 10000);
HttpClient client = new DefaultHttpClient(httpParams);

String url = "http://192.168.254.19/android/register.php";

HttpPost request = new HttpPost(url);
request.setEntity(new ByteArrayEntity(json.toString().getBytes("UTF8")));
request.setHeader("json", json.toString());

HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();

String result = null;
if (entity != null) {
    InputStream instream = entity.getContent();

    InputStreamReader is_reader = new InputStreamReader(instream);
    BufferedReader br = new BufferedReader(is_reader);
    result = br.readLine();
    Log.i("Read from server", result);
    Toast.makeText(this,  result, Toast.LENGTH_LONG).show();
}

我得到的回应是“ <br />

4

3 回答 3

1

您确定在读取的链上某处没有一些调试代码

echo $TesttVar1 . '<br />';

这也会阻止“header()”的工作。打开所有错误(error_reporting(E_ALL); ini_set('display_errors', 'on'); )
,如果是这种情况,它将向您显示输出的行。

但是如果它是 json_encode,为了帮助清除它,只需返回“Error_101”而不使用要测试的函数。但我不认为你在程序中走得那么远。

于 2012-05-16T11:33:04.367 回答
0

在这种情况下:

header("Content-type: text/html");
echo json_encode("error_101");

有用。

在另一种情况下:

header("Content-type: application/json");
echo json_encode("error_101");

它不起作用。

这似乎是一个错误!

于 2012-06-07T14:08:04.733 回答
0

json_encode 需要一个数组。喜欢

json_encode(array('status'=>'error_101'));
于 2012-05-16T11:32:17.783 回答