2012-05-16 118 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"); 

這是行不通的。

這似乎是一個錯誤!