【发布时间】:2012-01-08 16:32:29
【问题描述】:
我正在尝试从在浏览器中运行的小程序上传文件(日志文件)。我正在读取字符串中的文件。下面的函数,给定一个字符串数据和一个字符串 URL(例如:http://192.168.0.166:8380/app/customer/UploadData.do),将数据上传到一个 URL。因为,超时后,与服务器的会话丢失。因此,我在 URL 中附加了用户名和密码,以避免任何会话过期问题(因为此上传应该是自动的,无需任何手动输入等)。 URL(非公开)看起来像:
http://192.168.0.166:8380/app/customer/UploadData.do?username=uname&password=pword
public static void sendData(String aData, String aURL) throws Exception {
try {
byte[] myData = aData.getBytes();
/* Uploading the data */
URL myURL = new URL(aURL);
HttpURLConnection myConnection = (HttpURLConnection) myURL.openConnection();
myConnection.setDoOutput(true);
myConnection.setUseCaches(false);
myConnection.setDefaultUseCaches(false);
myConnection.setRequestProperty("Content-type", "application/octet-stream");
OutputStream myOutputStream = myConnection.getOutputStream();
myOutputStream.write(myData);
myOutputStream.flush();
myOutputStream.close();
int status = ((HttpURLConnection) myConnection).getResponseCode();
} catch (Exception exception) {
throw exception
}
}
只要与服务器的会话处于活动状态,此功能就可以正常工作。例如,当会话过期或用户注销(小程序 24/7 运行)时,它不起作用。请注意,通过 Web 浏览器访问时,上述 URL 可以正常工作。它的这个java代码(小程序)在会话到期时无法再次连接。如果有人能指出我在这里做错了什么,那将有很大帮助。任何帮助将不胜感激。
环境: Jboss 作为应用服务器,JBoss Secured Realm 用于登录。
【问题讨论】:
-
没有答案。 (这不是 HTTP POST。)我不得不考虑会话 cookie。也许您应该先单独登录,然后使用会话 cookie/url 重写。 setDoInput(false) 不会受伤。
-
@Joop Eggen:感谢指正,我更新了标题。