我很抱歉發佈這樣的「noob問題」,但我無法自己解決我的問題。 我有一個服務器端腳本,用PHP編寫,它返回不同的值,在這個例子中存儲在MySQL DB中的所有公司名稱。編碼麻煩:php api和java客戶端程序
在DB-The柱中被編碼的UTF-8 -The php文件被編碼以UTF-8
這是服務器端腳本:
include_once( 'SQLHandler.php') ; $ SQLHandler = new SQLHandler();
if(isset($_POST['command'])){
$command = $_POST['command'];
switch($command){
case 'getCompanies':
echo utf8_encode('[["Test1"],["Test2"],["Test3"],["Test4"]]');
//echo json_encode($SQLHandler -> getCompanies());
break;
}
}
它返回 「[[」 測試1 「],[」 的Test2 「],[」 Test3的 「],[」 TEST4 「]]」。
然而,當我想分析返回的字符串,並將其解析到一個數組(使用JSON-簡單庫),會出現以下情況:
?[["Test1"],["Test2"],["Test3"],["Test4"]]
Unexpected token END OF FILE at position 0.
Java代碼如下:
ArrayList companies = new ArrayList <>();
try {
URL url = new URL("http://localhost/api.php");
URLConnection conn = url.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
DataOutputStream out = new DataOutputStream(conn.getOutputStream());
String content = "command=getCompanies";
out.writeBytes(content);
out.flush();
out.close();
InputStream is = conn.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
String line;
while ((line = rd.readLine()) != null){
System.out.println(line);
}
String jsonText = readAll(rd);
is.close();
JSONArray array = (JSONArray) new JSONParser().parse(jsonText);
System.out.println(array);
System.out.println(array.toJSONString());
System.out.println(array.toString());
} catch(Exception e){
e.printStackTrace();
}
return null;
這是我第一次使用Java和JSON工作,所以它是可能的,我做了一個很容易找到的錯誤,但我會非常心存感激,如果你能指出來,我(和解釋什麼我做錯了;))
問候