2011-06-14 41 views
2

我正在用JAVA编写一个程序,将大量的XML文档发布到特定的Web地址,此外还有大量与此问题无关的其他数据处理。唯一的麻烦是,我预计会处理大约90,000条记录。在发布XML文档时,每条记录大约需要10秒,其中9条是通过在POST之后接收服务器的响应而获取的。是否可以在POST命令后忽略来自Web服务器的响应?

我的问题是:有没有办法将数据发布到网络服务器,然后忽略服务器的响应以节省时间?

这里是一个真实给我的麻烦代码剪断,它根据系统定时器从“writer.close”去“con.getResponseCode()”

URL url = new URL(TargetURL); 
con = (HttpsURLConnection) url.openConnection(); 


//Login with given credentials 
String login = (Username)+":"+(Password); 
String encoding = new sun.misc.BASE64Encoder().encode(login.getBytes()); 
con.setRequestProperty ("Authorization", "Basic " + encoding); 

// specify that we will send output and accept input 
con.setRequestMethod("POST"); 
con.setDoInput(true); 
con.setDoOutput(true); 

con.setConnectTimeout(20000) ; // long timeout, but not infinite 
con.setReadTimeout(20000); 

con.setUseCaches (false); 
con.setDefaultUseCaches (false); 

// tell the web server what we are sending 
con.setRequestProperty ("Content-Type", "text/xml"); 

OutputStreamWriter writer = new OutputStreamWriter(con.getOutputStream()); 
writer.write(data); 
writer.flush(); 
writer.close(); 

//****This is our problem.*****// 
int result = con.getResponseCode();     
System.err.println("\nResponse from server after POST:\n" + result); 
+0

如何使用不同的线程获得响应?或者更简单地使用线程池并行发送和接收许多请求。 – toto2 2011-06-14 23:36:15

回答

1

我看到你的问题。

使用策略来只读取标题对您不起作用,因为问题不是由于服务器作为响应发送大量数据。问题在于服务器需要很长时间才能处理客户端发送的数据,因此需要很长时间才能发送短的ack响应。

你要求的是异步响应。答案是AJAX,我的首选是GWT。

GWT提供了三种与服务器进行异步通信的方式。

  • GWT RPC
  • RequestBuilder
  • 的JavaScript包括
  • MVP ClientFactory/EventBus

请阅读我的描述在

但是接下来,您可能更喜欢使用JQuery,但我缺乏这方面的知识。

相关问题