用socket怎么获得javaWeb返回的json?

颖辉小居 发布于 2015/12/15 16:09
阅读 628
收藏 0

javaweb使用了struts2 返回json字符串,其中一种客户端使用socket访问,怎么获取返回的json,我打印出了返回的流,只有 http版本号 和状态码

服务端发送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);
			System.out.println("返回json:"+jsonStr);
			out.print(jsonStr);
		} catch (IOException e) {
			System.err.println("response.getWriter() 获取输出流错误");
			e.printStackTrace();
		}finally{
			out.flush();
			out.close();
		}
	}	



加载中
0
为梦而来
为梦而来
先把数据对象转换成JSON

然后再转行成字符串,然后再转成byte[](如果你使用的还是最底层的Socket的话)
0
Sel8616
Sel8616

Socket是工作在传输层的,Struts2返回的数据是封闭在HTTP包里——工作在应用层

你需要先按HTTP标准把HTTP的头和数据段解析出来,再去解析数据段的内容——这才是JSON存放的地方

事实上,你这样跨层次通信的做法,本身就有问题

最好,服务器和客户端双方都用同一协议工作

0
颖辉小居
颖辉小居

引用来自“为梦而来”的评论

先把数据对象转换成JSON

然后再转行成字符串,然后再转成byte[](如果你使用的还是最底层的Socket的话)
服务端是不能变的,服务端是用,String jsonStr = new Gson().toJson(map);response.getWriter().print(jsonStr);而客户端必须使用socket获得并解析json
0
颖辉小居
颖辉小居

引用来自“Sel8616”的评论

Socket是工作在传输层的,Struts2返回的数据是封闭在HTTP包里——工作在应用层

你需要先按HTTP标准把HTTP的头和数据段解析出来,再去解析数据段的内容——这才是JSON存放的地方

事实上,你这样跨层次通信的做法,本身就有问题

最好,服务器和客户端双方都用同一协议工作

我也是不得已才这样,要实现安卓向struts2 批量上传文件,找了好久只有使用SocketHttpRequester 模拟表单提交的方式才能实现。里面用的就是socket 我需要解析返回的提示等信息。愁死了
0
Sel8616
Sel8616

引用来自“Sel8616”的评论

Socket是工作在传输层的,Struts2返回的数据是封闭在HTTP包里——工作在应用层

你需要先按HTTP标准把HTTP的头和数据段解析出来,再去解析数据段的内容——这才是JSON存放的地方

事实上,你这样跨层次通信的做法,本身就有问题

最好,服务器和客户端双方都用同一协议工作

引用来自“颖辉小居”的评论

我也是不得已才这样,要实现安卓向struts2 批量上传文件,找了好久只有使用SocketHttpRequester 模拟表单提交的方式才能实现。里面用的就是socket 我需要解析返回的提示等信息。愁死了

项目里android必须使用socket??

我记得struts2可以用multipart上传多文件吧?不是很确定,你可以查查

0
Sel8616
Sel8616

引用来自“Sel8616”的评论

Socket是工作在传输层的,Struts2返回的数据是封闭在HTTP包里——工作在应用层

你需要先按HTTP标准把HTTP的头和数据段解析出来,再去解析数据段的内容——这才是JSON存放的地方

事实上,你这样跨层次通信的做法,本身就有问题

最好,服务器和客户端双方都用同一协议工作

引用来自“颖辉小居”的评论

我也是不得已才这样,要实现安卓向struts2 批量上传文件,找了好久只有使用SocketHttpRequester 模拟表单提交的方式才能实现。里面用的就是socket 我需要解析返回的提示等信息。愁死了

引用来自“Sel8616”的评论

项目里android必须使用socket??

我记得struts2可以用multipart上传多文件吧?不是很确定,你可以查查

http://blog.csdn.net/hzc543806053/article/details/7526306
0
颖辉小居
颖辉小居

引用来自“Sel8616”的评论

Socket是工作在传输层的,Struts2返回的数据是封闭在HTTP包里——工作在应用层

你需要先按HTTP标准把HTTP的头和数据段解析出来,再去解析数据段的内容——这才是JSON存放的地方

事实上,你这样跨层次通信的做法,本身就有问题

最好,服务器和客户端双方都用同一协议工作

引用来自“颖辉小居”的评论

我也是不得已才这样,要实现安卓向struts2 批量上传文件,找了好久只有使用SocketHttpRequester 模拟表单提交的方式才能实现。里面用的就是socket 我需要解析返回的提示等信息。愁死了

引用来自“Sel8616”的评论

项目里android必须使用socket??

我记得struts2可以用multipart上传多文件吧?不是很确定,你可以查查

引用来自“Sel8616”的评论

http://blog.csdn.net/hzc543806053/article/details/7526306
我说的是安卓上传 不是jsp
0
颖辉小居
颖辉小居

引用来自“Sel8616”的评论

Socket是工作在传输层的,Struts2返回的数据是封闭在HTTP包里——工作在应用层

你需要先按HTTP标准把HTTP的头和数据段解析出来,再去解析数据段的内容——这才是JSON存放的地方

事实上,你这样跨层次通信的做法,本身就有问题

最好,服务器和客户端双方都用同一协议工作

引用来自“颖辉小居”的评论

我也是不得已才这样,要实现安卓向struts2 批量上传文件,找了好久只有使用SocketHttpRequester 模拟表单提交的方式才能实现。里面用的就是socket 我需要解析返回的提示等信息。愁死了

引用来自“Sel8616”的评论

项目里android必须使用socket??

我记得struts2可以用multipart上传多文件吧?不是很确定,你可以查查

引用来自“Sel8616”的评论

http://blog.csdn.net/hzc543806053/article/details/7526306
安卓上传单文件很简单,但是批量上传给struts2  目前找到的方法就是模拟表单提交
0
Sel8616
Sel8616

引用来自“Sel8616”的评论

Socket是工作在传输层的,Struts2返回的数据是封闭在HTTP包里——工作在应用层

你需要先按HTTP标准把HTTP的头和数据段解析出来,再去解析数据段的内容——这才是JSON存放的地方

事实上,你这样跨层次通信的做法,本身就有问题

最好,服务器和客户端双方都用同一协议工作

引用来自“颖辉小居”的评论

我也是不得已才这样,要实现安卓向struts2 批量上传文件,找了好久只有使用SocketHttpRequester 模拟表单提交的方式才能实现。里面用的就是socket 我需要解析返回的提示等信息。愁死了

引用来自“Sel8616”的评论

项目里android必须使用socket??

我记得struts2可以用multipart上传多文件吧?不是很确定,你可以查查

引用来自“Sel8616”的评论

http://blog.csdn.net/hzc543806053/article/details/7526306

引用来自“颖辉小居”的评论

我说的是安卓上传 不是jsp
一样的啊,你用apache的HttpClient包,或者直接java.net.HttpURLConnection
返回顶部
顶部