[英]Handling outside requests in vaadin
我有一个记录声音的小程序,然后将其上传到服务器上。 录音部分已经完成,但是我被卡在上传部分。 我的applet与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()
从applet客户端客户端读取流,但似乎没有发送任何换行符。 尝试使用:
outWriterS.write(buff.toString() + "\n");
如果没有在这里专门分析您的代码,我认为Vaadin不会很好地支持这种方法。 因此,也许正确的方法是将一个单独的servlet与Vaadin应用程序一起使用。 (Vaadin应用程序实际上实际上是一个servlet本身)。 这样,您可以使用标准的HTTP请求/响应处理。
此外,在处理潜在的大文件时,可能会使用多部分数据。 例如,见我怎样才能使用Java的multipart / form-data的POST请求?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.