开发者社区> 问答> 正文

socket怎么接收HttpServletResponse返回的json字符串? 400 请求报错

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

展开
收起
kun坤 2020-05-29 11:53:48 1287 0
1 条回答
写回答
取消 提交回答
  • 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######

    引用来自“pseudo”的评论

    out.flush() 这个是发送json 的完整代码
    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();
    		}
    	}
    2020-05-29 11:53:55
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载