Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中使用套接字发送JSON响应_Java_Gson_Dataoutputstream - Fatal编程技术网

如何在Java中使用套接字发送JSON响应

如何在Java中使用套接字发送JSON响应,java,gson,dataoutputstream,Java,Gson,Dataoutputstream,我已经构建了一个基本的HTTP服务器,并且正在尝试发送对GET请求的回复。我已经安装了Gson作为JSON解析器,但我不确定如何用JSON编码响应并发送回客户端 这是我的代码,非常感谢您的帮助。(实际响应的最后一种方法) 公共类HttpServer扩展线程{ //私有变量 私有套接字connectedClient=null; private BufferedReader clientRequest=null; 私有DataOutputStream responseToClient=null; /

我已经构建了一个基本的HTTP服务器,并且正在尝试发送对GET请求的回复。我已经安装了Gson作为JSON解析器,但我不确定如何用JSON编码响应并发送回客户端

这是我的代码,非常感谢您的帮助。(实际响应的最后一种方法)

公共类HttpServer扩展线程{
//私有变量
私有套接字connectedClient=null;
private BufferedReader clientRequest=null;
私有DataOutputStream responseToClient=null;
/**
*公共构造函数
*@param客户端
*/
公共HttpServer(套接字客户端){
connectedClient=客户端;
}
/**
*要在线程上执行的代码
*/
公开募捐{
试一试{
//登录新客户端
System.out.println(“客户端”+connectedClient.getInetAddress()+
“:”+connectedClient.getPort()+“已连接”);
//获取客户端请求
clientRequest=new BufferedReader(新的InputStreamReader(connectedClient.getInputStream());
//启动响应对象
responseToClient=新的DataOutputStream(connectedClient.getOutputStream());
//处理请求
processClientRequest();
//闭合缓冲写入程序
responseToClient.close();
}捕获(例外e){
//打印错误
e、 printStackTrace();
}
}
/**
*解析客户端请求并调用适当的处理程序
*@抛出异常
*/
私有void processClientRequest()引发异常{
String requestString=clientRequest.readLine();
字符串头=请求字符串;
//分手请求
StringTokenizer tokenizer=新的StringTokenizer(标头);
//不同的请求部分
字符串httpMethod=tokenizer.nextToken();
字符串httpQueryString=tokenizer.nextToken();
//打印客户端请求
StringBuffer responseBuffer=新的StringBuffer();
while(clientRequest.ready()){
append(requestString+“”);
System.out.println(请求字符串);
requestString=clientRequest.readLine();
}
//ID获取请求
if(requestString.equals(“GET”)){
if(httpQueryString.equals(“/”){
sendResponse();
}   
}
}
/**
*将回复发送回客户端
*@抛出异常
*/
私有void sendResponse()引发异常{
HashMap mapResponse=新建HashMap();
mapsresponse.put(“A”,“Hands”);
mapResponse.put(“B”,“英尺”);
//转换为JSON并发送回客户端
//?????????????????????????????
}
}
这不仅仅是:

Gson gson = new Gson();
String json = gson.toJson(mapResponse);
//Other code to send it back to client
你看过格森的照片了吗?我怀疑你想要的是类似于

Gson gson = new Gson();
String json = gson.toJson(mapResponse); 
要将数据写回套接字,请查看。这可能会奏效:

new PrintWriter(responseToClient, true).println(json);

那我该怎么把它寄回去呢?responseToClient.writeBytes(json)?
new PrintWriter(responseToClient, true).println(json);