日期:2014-05-18  浏览次数:20819 次

请教大神一个Java写服务端后台接口的问题
本帖最后由 I_am_not_loser 于 2014-03-19 18:29:21 编辑
以前都是做客户端开发的, 现在刚开始来接触服务端接口,用的是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都是怎么处理的呢?先谢过了

------解决方案--------------------

 A JSONObject text must begin with '{' at 
提示很明显了,json格式{"":""}
System.out.print一下rquest中获取到的内容

------解决方案--------------------
HTTP Status 500 - A JSONObject text must begin with '{' at 1 [character 2 line 1]

你这个错明显是格式不对啊
------解决方案--------------------
跟你说了这是解析的问题,既然不发request服务器启动都会报错,那说明问题根本不出在你贴出来的这块代码里,你找你自己的启动逻辑还有哪里有解析json的部分,仔细检查