2012-11-03 11 views
0

나는 소리를 녹음 한 애플릿을 서버에 업로드했다. 사운드 녹음 부분이 끝났지 만 업로드 부분에 붙어 있습니다. 내 애플릿은 vaadin 응용 프로그램과 통합되어 있습니다. 나는 애플릿과 vaadin 서버 측에서 요청 응답주기를 성공적으로 만들었습니다. 그러나 출력 스트림을 통해 데이터를 보낼 수 없습니다. 내 코드입니다 : 서버 측 코드에바깥 쪽 요청 처리하기

  connection = (HttpURLConnection) new URL("http://localhost:8080/CheckResponse/").openConnection(); 
      connection.setRequestMethod("POST"); 
      connection.setDoOutput(true); 
      connection.setDoInput(true); 
      connection.addRequestProperty("applet", "sound recording applet"); 
      //CREATE A WRITER FOR OUTPUT 
      //outWriter = new PrintWriter(connection.getOutputStream()); 
      OutputStreamWriter outWriterS = new OutputStreamWriter(connection.getOutputStream()); 
      buff.append("param1="); 
      buff.append(URLEncoder.encode("Param 1 Value", "UTF-8")); 
      buff.append("&"); 
      buff.append("param2="); 
      buff.append(URLEncoder.encode("Param 2 Value", "UTF-8")); 

      outWriterS.write(buff.toString()); 
      outWriterS.flush(); 
      outWriterS.close(); 

      //RESPONSE STREAM 
      serverResponse = new BufferedReader(new InputStreamReader(connection.getInputStream())); 

      //READ THE RESPOSNE 
      String line2; 
      while ((line2 = serverResponse.readLine()) != null) 
      { 
      System.out.println(line2); 
      } 

:

public void onRequestStart(HttpServletRequest request, 
     HttpServletResponse response) { 
    // TODO Auto-generated method stub 
    try { 
     if(request.getHeader("applet")!=null){ 
      System.out.println("Request started by applet"); 
     if(request.getHeader("applet").equalsIgnoreCase("sound recording applet")){ 
      System.out.println("Reading the streams"); 
     InputStreamReader reader = new InputStreamReader(request.getInputStream()); 

     BufferedReader buff = new BufferedReader(reader); 
     System.out.println("Buffer"+buff); 
     System.out.println("Buffer has :"+buff.readLine()); 
     } 
     } 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    //System.out.println("Request started"); 

} 

bufferReader.readLine()는 null을 반환합니다. 그 이유는 무엇일까요? 감사합니다.

답변

0

애플릿 클라이언트 클라이언트에서 스트림을 읽으려면 bufferReader.readLine()을 사용하고 있지만 아직 줄 바꿈 문자를 보내지는 않습니다. 사용해보십시오 :

+0

답장을 보내 주셔서 감사합니다. 나는 그것을 시도했지만 여전히 null을 얻는다. –

0

여기에서 코드를 구체적으로 분석하지 않아도 바이든은 이러한 접근 방식을 잘 지원하지 않는다고 생각합니다. 그래서 올바른 방법은 Vaadin 어플리케이션과 함께 별도의 서블릿을 작성하는 것입니다. (Vaadin 응용 프로그램은 사실상 서블릿 그 자체입니다.) 이렇게하면 표준 HTTP 요청/응답 처리를 사용할 수 있습니다.

또한 잠재적으로 큰 파일을 처리 할 때 다중 부분 데이터를 사용하는 것일 수 있습니다. 예를 들어 How can I make a multipart/form-data POST request using Java?

관련 문제