Java 在瓦丁处理外部请求

Java 在瓦丁处理外部请求,java,jakarta-ee,servlets,vaadin,Java,Jakarta Ee,Servlets,Vaadin,我有一个小程序,它记录声音,然后上传到服务器上。录音部分已完成,但我仍停留在上传部分。我的小程序与vaadin应用程序集成。我已经用我的applet和vaadin服务器端成功地完成了请求响应循环。但我无法通过其输出流发送任何数据。 我的代码是: connection = ( HttpURLConnection ) new URL( "http://localhost:8080/CheckResponse/" ).openConnection();

我有一个小程序,它记录声音,然后上传到服务器上。录音部分已完成,但我仍停留在上传部分。我的小程序与vaadin应用程序集成。我已经用我的applet和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。原因可能是什么?
谢谢

您正在使用
bufferReader.readLine()
从您的小程序客户端读取流,但似乎没有发送任何换行符。尝试使用:

outWriterS.write(buff.toString() + "\n");

在这里没有具体分析您的代码,我认为Vaadin不太支持这种方法。因此,正确的方法可能是在Vaadin应用程序中使用一个单独的servlet。(无论如何,Vaadin应用程序本身实际上就是一个servlet)。通过这种方式,您可以使用标准HTTP请求/响应处理

此外,在处理潜在的大文件时,可能会使用多部分数据。例如,见