我想從applet上運行的瀏覽器中上傳文件(日誌文件)。我正在讀取字符串中的文件。以下函數給出一個字符串數據和一個字符串URL(例如:http://192.168.0.166:8380/app/customer/UploadData.do),將數據上傳到一個URL。由於在超時後與服務器的會話丟失。因此,我在URL中添加了用戶名和密碼,以避免任何會話過期問題(因爲此上傳應該是自動的,無需任何手動輸入等)。該URL(不公開)看起來像:使用HTTP連接從java上傳文件
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
}
}
此功能完全正常,只要與服務器的會話是活的。當例如會話過期或用戶註銷時(applet運行24/7),它不起作用。請注意,上述網址在通過網絡瀏覽器訪問時效果很好。它的Java代碼(applet)在會話過期時不能再次連接。如果有人能指出我在這裏做錯了什麼,這將會非常有幫助。任何幫助將不勝感激。
環境: Jboss作爲應用服務器和JBoss Secured Realm登錄。
NO ANSWER。 (這不是HTTP POST。)我必須考慮會話cookie。也許你應該先分別進行登錄,然後使用會話cookie/url重寫。 setDoInput(false)不會傷害。 –
@Joop Eggen:感謝您的糾正,我更新了標題。 –