我正在编写一个内部Java Applet来通过HTTP进行文件上传。我开始使用内置的ClientHttpRequest,如果我想要一个接一个地发布,它会很有效。当我尝试同时发布多个线程时,服务器端的某些内容会发生异常,并且在仍然上传较小文件的同时,大型文件的连接将挂起。 (大似乎是大约10兆)经过大量的查看,我无法找到我可以设置从此错误中恢复的超时,但最终从Apache找到了ClientHttp,它提供了一种设置超时的机制。它的问题在于,虽然它声称能够在多线程程序中工作,但它实际上只能执行一个接一个的请求。我找到了很多HttpClient的示例代码,它说它可以用于多个线程,并且已经调整了我的代码以合并这些更改,但是它们都没有任何区别,我仍然坚持基本上是1个线程。
虽然发布时不需要多个线程(HttpClient似乎比ClientHttpRequest快一点),但是由于有很多较小的文件可以在同一时间。
这些文件是通过HTTP发送的,因为我们希望使用会话cookie对已登录用户使用相同的身份验证。
所以我正在寻找一种方法来设置ClientHttpRequest的超时或HttpClient的代码,它实际上会在承诺的同时发送多个请求。
我在线程之间共享相同的HttpClient实例并使用多线程连接管理器(如果没有这个,它甚至不会工作),就像文档说的那样,它没有帮助。
如果您需要任何澄清,我们将不胜感激,请告知我们。
答案 0 :(得分:1)
查看代码示例可能有所帮助。
问题可能是applet环境。您是在appletviewer,IDE还是在浏览器中进行测试?浏览器通常设置为将同一Web服务器的连接数限制为2.您可以尝试添加main()并单独运行它以查看是否可以解决问题。