请教大神一个Java写服务端后台接口的问题

iXiaXianBing 2014-03-19 06:26:59
以前都是做客户端开发的, 现在刚开始来接触服务端接口,用的是JSP,先上代码:
public static JSONObject receiveRequet(HttpServletRequest request, String method)
{
try
{
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(request.getInputStream()));
String str = null;
StringBuffer buffer = new StringBuffer();
while ((str = bufferedReader.readLine()) != null)
{
buffer.append(str);
}

String input = buffer.toString();
JSONObject params = new JSONObject(input);

return params;
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}

return null;
}

客户端发来request请求 能够正确返回JSON 但是问题是 服务端会报错HTTP Status 500 - A JSONObject text must begin with '{' at 1 [character 2 line 1]
网上搜索了下 大概意思是UTF-8编码的bom头的问题 解决办法基本上都是txt文件去掉bom头
难道是要将InputStream先写入文件再去bom头后读取出来吗?可是这样的话效率会是个很大的问题吧
我想请教这个问题该如何处理 大家接收客户端request都是怎么处理的呢?先谢过了
...全文
2234 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinxiao9172 2015-03-06
  • 打赏
  • 举报
回复
就是Base64位的转码问题,在通信过程中json数据中的引号,别转移所以发送请求之前要先base64编码,服务端接到后要做相应的base64位解码,之后再解析json
致知Fighting 2014-03-20
  • 打赏
  • 举报
回复
跟你说了这是解析的问题,既然不发request服务器启动都会报错,那说明问题根本不出在你贴出来的这块代码里,你找你自己的启动逻辑还有哪里有解析json的部分,仔细检查
iXiaXianBing 2014-03-19
  • 打赏
  • 举报
回复
而且我将帖子中的
String input = buffer.toString();
JSONObject params = new JSONObject(input);

改为
JSONObject data = new JSONObject();
data.put("username", "123");
data.put("password", "456");
data.put("email", "11111111111@qq.com");
data.put("phone", "11111111111");

System.out.println("data.toString());
JSONObject params = new JSONObject(data.toString());


打印出来是
{"phone":"11111111111","username":"123","email":"11111111111@qq.com","password":"456"}
唯一的却别好像是这些字段之间没有空格而已 可是JSON解析都没有问题的啊 求大神现身
iXiaXianBing 2014-03-19
  • 打赏
  • 举报
回复
引用 7 楼 huxiweng 的回复:
HTTP Status 500 - A JSONObject text must begin with '{' at 1 [character 2 line 1] 你这个错明显是格式不对啊
可是问题是哪里的明显呢 格式如楼上
iXiaXianBing 2014-03-19
  • 打赏
  • 举报
回复
引用 6 楼 andy861025 的回复:

 A JSONObject text must begin with '{' at 
提示很明显了,json格式{"":""}
System.out.print一下rquest中获取到的内容
真的很蛋疼 格式似乎又是对的呢 { "password" : "456", "username" : "123", "phone" : "11111111111", "email" : "11111111111@iclound.com"}
teemai 2014-03-19
  • 打赏
  • 举报
回复
HTTP Status 500 - A JSONObject text must begin with '{' at 1 [character 2 line 1] 你这个错明显是格式不对啊
365810247 2014-03-19
  • 打赏
  • 举报
回复

 A JSONObject text must begin with '{' at 
提示很明显了,json格式{"":""}
System.out.print一下rquest中获取到的内容
iXiaXianBing 2014-03-19
  • 打赏
  • 举报
回复
引用 3 楼 fangmingshijie 的回复:
用Base64解码再使用看看。
对InputStream 还是对input进行Base64解码?我想请教一般是怎么处理接口发来的request请求的
tony4geek 2014-03-19
  • 打赏
  • 举报
回复
楼上 的 先转 试试。
  • 打赏
  • 举报
回复
用Base64解码再使用看看。
iXiaXianBing 2014-03-19
  • 打赏
  • 举报
回复
引用 1 楼 ygycomon 的回复:
我怎么看这个异常是因为你客户端和服务器端的json库不一致导致格式不一样解析失败?
解析能成功的哦 客服端不发request 只服务端启动也会报这个错 所以肯定不是你说的这个问题呢
致知Fighting 2014-03-19
  • 打赏
  • 举报
回复
我怎么看这个异常是因为你客户端和服务器端的json库不一致导致格式不一样解析失败?

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧