HTTP Status 500 – A JSONObject text must begin with

J2EE 码拜 9年前 (2015-04-03) 1451次浏览 0个评论
 

以前都是做客户端开发的, 现在刚开始来接触服务端接口,用的是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都是怎么处理的呢?先谢过了

HTTP Status 500 - A JSONObject text must begin with
我怎么看这个异常是因为你客户端和服务器端的json库不一致导致格式不一样解析失败?
HTTP Status 500 - A JSONObject text must begin with
引用 1 楼 ygycomon 的回复:

我怎么看这个异常是因为你客户端和服务器端的json库不一致导致格式不一样解析失败?

解析能成功的哦 客服端不发request  只服务端启动也会报这个错 所以肯定不是你说的这个问题呢 

HTTP Status 500 - A JSONObject text must begin with
用Base64解码再使用看看。
HTTP Status 500 - A JSONObject text must begin with
楼上 的 先转  试试。 
HTTP Status 500 - A JSONObject text must begin with
引用 3 楼 fangmingshijie 的回复:

用Base64解码再使用看看。

对InputStream 还是对input进行Base64解码?我想请教一般是怎么处理接口发来的request请求的

HTTP Status 500 - A JSONObject text must begin with
40分
 A JSONObject text must begin with ""{"" at 
提示很明显了,json格式{"":""}
System.out.print一下rquest中获取到的内容
HTTP Status 500 - A JSONObject text must begin with
40分
HTTP Status 500 – A JSONObject text must begin with “”{“” at 1 [character 2 line 1]

你这个错明显是格式不对啊

HTTP Status 500 - A JSONObject text must begin with
引用 6 楼 andy861025 的回复:
 A JSONObject text must begin with ""{"" at 
提示很明显了,json格式{"":""}
System.out.print一下rquest中获取到的内容

真的很蛋疼 格式似乎又是对的呢
{  “password” : “456”,  “username” : “123”,  “phone” : “11111111111”,  “email” : “11111111111@iclound.com”}

HTTP Status 500 - A JSONObject text must begin with
引用 7 楼 huxiweng 的回复:

HTTP Status 500 – A JSONObject text must begin with “”{“” at 1 [character 2 line 1]

你这个错明显是格式不对啊

可是问题是哪里的明显呢 格式如楼上

HTTP Status 500 - A JSONObject text must begin with
而且我将帖子中的

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解析都没有问题的啊 求大神现身

HTTP Status 500 - A JSONObject text must begin with
20分
跟你说了这是解析的问题,既然不发request服务器启动都会报错,那说明问题根本不出在你贴出来的这块代码里,你找你自己的启动逻辑还有哪里有解析json的部分,仔细检查
HTTP Status 500 - A JSONObject text must begin with
就是Base64位的转码问题,在通信过程中json数据中的引号,别转移所以发送请求之前要先base64编码,服务端接到后要做相应的base64位解码,之后再解析json

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明HTTP Status 500 – A JSONObject text must begin with
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!