response.setContentType("text/json;charset=utf-8");//json 的编码 out =response.getWriter(); String jsonStr = new Gson().toJson(map); logger.info("返回json:"+jsonStr); out.print(jsonStr);上面是服务端处理请求以后返回json到输出流。 客户端是socket模拟http协议发送的请求。请问socket客户端怎么获得这个json字符串呢?客户端把输入流用BufferedReader都打印了也没看到这个json
out.flush()######回复 @pseudo : 浏览器可以看到json######回复 @颖辉小居 : 你先用浏览器试试有返回么,然后用telnet发送下请求看看吧######回复 @pseudo : 客户端发送请求没问题,可以正确传递参数和上传文件。就是服务端返回的json客户端不能拿到。不知道把json写到response获得的printWriter这个输出流,到底怎么获取。在客户端socket 的输入流里没有看到,只是打印出来一些http的code码,之类的。都是200表示成功了。没看到json######回复 @颖辉小居 : http协议是在tcp协议之上的协议,需要符合一定的规则,如果你自己用socket进行http交互,你要自己处理http数据的发送与解析,这样才能得到你想要的数据。######回复 @颖辉小居 : 你服务端走的是http协议,但如果你要用socket的话你发送的数据得符合http协议,否则服务器是解析不了你发送的请求的,你可以看看这个http://my.oschina.net/wisedream/blog/127772######用浏览器能看到么?然后再考虑解析Response吧######回复 @颖辉小居 : 在response header的后面,参照http://kb.cnblogs.com/page/130970/######浏览器 可以看到这个json可是 不知道它在HTTP协议的哪个部分中######你得自己解析http协议,然后取json内容######有没有更好用的更适合你的API:HttpURLConnection######
public static void sendMap(HttpServletResponse response,Map<String, Object> map){ PrintWriter out = null; try { response.setContentType("text/json;charset=utf-8");//json 的编码 out =response.getWriter(); String jsonStr = new Gson().toJson(map); logger.info("返回json:"+jsonStr); out.print(jsonStr); } catch (IOException e) { logger.error("response.getWriter() 获取输出流错误"); e.printStackTrace(); }finally{ out.flush(); out.close(); } }
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。