我写了一个Java调度程序,每小时使用:
new SAXBuilder().build(new URL(xxx));
Run Code Online (Sandbox Code Playgroud)
要么
HttpConnection.connect(new URL(xxx)); // jsoup library code
Run Code Online (Sandbox Code Playgroud)
获取一个大的XML/HTML文件.
我的服务器最大带宽限制是2Mbits.
当这个Java调度代码运行时,我使用超过2Mbits的带宽.(看看)
因此,每次用户访问我的服务器时,它都太慢了.
如何限制Java计划使用较低的带宽?(例如500Kbits)
我正在使用Ubuntu服务器.
(这是一个签名的小程序,我决定不使用 HTTPClient 以保持我的 jar 非常小)
我正在使用 HttpURLConnection 使用多部分表单发布成功将文件从用户上传到服务器。
问题在于 HttpURLConnection 在发送数据之前会缓存数据。因此,当我从文件中读取数据并写入 Outputstream 时,它只是缓冲数据 - 因此显示上传状态的进度条是完全错误的。但请注意,表单邮政代码有效,并且文件确实已正确上传,返回代码为 200。
那么如何确保 HttpURLConnection 不会缓存我发送到服务器的数据?
这是我的来源:
public UploadResponse send(String formPostUrlStr,String fileFieldName,File targetFile, Map<String, String> valuesMap, UploadStatusListener uploadStatusListener) throws Exception{
String sendStr=getBoundaryMessage(Boundary, valuesMap, fileFieldName, targetFile.getName(), valuesMap.get("content-type") );//"image/png") ;
System.out.println(" multi-part start \n "+ sendStr+ " multi-part end \n");
String lenstr=Long.toString((long)(sendStr.length()*2)+ targetFile.length());
System.out.println("Content-Length"+ lenstr);
//Content-Length
URL url= new URL(formPostUrlStr);
long startTime= System.currentTimeMillis();
HttpURLConnection s3Connection = (HttpURLConnection) url.openConnection();
System.out.println("opened url to "+ formPostUrlStr +", connection ok ..");
s3Connection.setRequestProperty("Content-Type", "multipart/form-data; …Run Code Online (Sandbox Code Playgroud)