缓冲读取器返回Null

时间:2011-08-10 07:59:55

标签: java ajax json bufferedreader

嗨,我发送一个像这样的服务器的ajax调用

$.ajax({
    type: 'POST',
    url: "...",
    dataType:'json',
    data:JSON.stringify(contact),
    success:function(){
        alert("success")
    }

在服务器上我处理这个请求并尝试从这样的请求中读取json对象。

StringBuilder sb = new StringBuilder();
try {
        BufferedReader br = new BufferedReader(new 
InputStreamReader(request.getInputStream()));
        String line = null;
        while ((line = br.readLine()) != null) {
            sb.append(line);
        }
    } catch (IOException e) {
    }

但是br.readLine()返回null。知道为什么会这样吗?

2 个答案:

答案 0 :(得分:1)

因为你到达了流的末尾。

来自JavaDocs:

  

返回:包含该行内容的字符串,不包括任何内容   行终止字符,如果流结束,则为null   达到

很可能返回一个空结果,问题出在其他地方。我不知道AJAX请求是作为请求的主体发送还是作为POST参数发送。使用request.getParameter(“json”)可能会有帮助,但首先请检查LiveHttpHeaders,浏览器如何对请求进行编码以及哪个参数名称绑定到数据。在这种情况下,您根本不必使用readline。

答案 1 :(得分:0)

我测试了它,你如何使用HTTP请求InputStream没有问题。 “contact”元素很可能在请求时未定义。因此,它将转换为空JSON字符串。 尝试在“数据”字段中添加一些固定文本,您应该看到它在服务器端工作。