2011-08-10 3 views
-2

안녕하세요 내가 서버에서이버퍼링 된 판독기에서 Null을 반환합니다.

$.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을 반환합니다. 왜 그런가?

+0

'AJAX'를 통해 POST 버튼으로 제출할 수 없으므로 null이 표시됩니다. –

답변

0

테스트를 거쳤으며 HTTP 요청 InputStream을 사용하는 방법에 문제가 없습니다. 'contact'요소는 요청시 정의되지 않은 것일 수 있습니다. 따라서 빈 JSON 문자열로 변환됩니다. '데이터'입력란에 고정 텍스트를 추가하면 서버 측에서 작동하는 것을 확인해야합니다.

1

스트림의 끝에 도달했기 때문에.

반환 값 : 다음의 JavaDoc에서

는 라인 종료 문자를 포함하지, 라인의 내용을 포함하는 문자열, 또는 null 스트림의 마지막에 있었는지 는

에 도달

빈 결과가 반환 될 가능성이 높습니다. 문제는 다른 곳에서 발생합니다. AJAX 요청이 요청 본문 또는 POST 매개 변수로 전송되는지 여부는 알 수 없습니다. 대신 request.getParameter ("json")를 사용하면 도움이 될 수 있지만 먼저 브라우저에서 요청을 인코딩하는 방법과 데이터에 바인딩 된 매개 변수 이름을 LiveHttpHeaders로 확인하십시오. 이 경우에는 readline을 사용하지 않아도됩니다.

+0

을 사용할 수 있지만 br.readLine()이 항상 null을 반환하기 때문에 while 루프를 입력하지 마십시오. –

+1

예, 스트림이 항상 비어 있기 때문에 가능합니다! request.getInputStream()을 확인하여 확인하십시오. read()는 -1을 리턴합니다! – Daniel

+1

예를 들어 wireshark를 사용하여 네트워크 트래픽을 검사 할 수 있습니다. – hlovdal

관련 문제