2012-05-16 89 views
0

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

这里是我的代码从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 />

+0

你打开了错误报告吗?
对我来说看起来像一个沉默的错误。 – prehfeldt

+0

你说,“昨天我重新安装了我的XAMPP ...”这可能意味着一些设置已经改回默认设置。可能有用的检查他们。 – rossum

回答

0

json_encode需要一个数组。像

json_encode(array('status'=>'error_101')); 
+0

这不是真的!请参阅文档:http://de3.php.net/json_encode – prehfeldt

+0

您应该可以使用json_encode字符串 - 您将获得{“Error_101”}。它只是最常用的数组。 (更正 - 如下所示,它会返回“Error_101” - 感谢prehfeldt) – Robbie

+0

@Robbie:那也不是真的!例如,如果您将字符串编码为json,则会得到“error_101”。请参阅此页上的第三个图表:http://www.json.org/ – prehfeldt

1

你确定你是别有一番调试代码的地方了,上面写着

echo $TesttVar1 . '<br />'; 

这也将停止工作的“标头()”的链条。打开所有错误(error_reporting(E_ALL); ini_set('display_errors','on');),那么将显示
的输出行,如果是这种情况。

但是,如果它是json_encode,以帮助除草它,只是返回“Error_101”没有测试功能。但我不认为你会在这个计划中做得很差。

在这种情况下
+0

我已经检查过代码,除了三个不同的if else语句块内的echo echo json_encode(value)语句外,我没有任何'echo'语句。 –

0

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

它的工作原理。

在这种情况下,其他:

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

这是行不通的。

这似乎是一个错误!