【发布时间】:2013-06-13 02:19:43
【问题描述】:
以下方法发送 JSON 回复。但是在接收端,我不断收到无效字符,并且 UTF-8 没有解码数据。我做错了什么?
对客户端的响应 = 数据输出流
//Get the client request
clientRequest = new BufferedReader(new InputStreamReader(connectedClient.getInputStream())); //connectedclient = socket
//Start response object
responseToClient = new DataOutputStream(connectedClient.getOutputStream());
/**
* Sends a JSON response for an object
* @param objectToEncode
* @throws Exception
*/
private void sendJSONResponse(Object objectToEncode) throws Exception{
//Encode object into JSON
String jsonString = new Gson().toJson(objectToEncode);
// HTTP Header... Status code, last modified
responseToClient.writeBytes(HTTP_OK_STATUS_CODE);
responseToClient.writeBytes(CONTENT_TYPE_JSON);
responseToClient.writeBytes("Last-modified: "+ HelperMethods.now() +" \r\n");
responseToClient.writeBytes("\r\n");
// The HTTP content starts here
responseToClient.writeBytes(jsonString);
}
【问题讨论】:
-
什么是
responseToClient?您是自己编写 HTTP 代码吗? -
是的。列出了 HTTP 代码(responseToClient 也是 DataOutputStream
-
@WilliamFalcon,我有 ArrayList 对象,其中包含许多中文和日文字符,如何使用 GSON 库对它们进行序列化,通常意味着我会丢失这些字符并获得 ?其中。
-
问题不在
GSON。问题是字符串的字节编码。在将字符串转换为最终作为响应发送的字节数组时,您需要提及utf-8编码