At line 1 added one line |
Here is an example class that can interact with the server using HTTP to do download, upload, delete, rename, makedir, and list. |
At line 3 changed 30 lines |
|
//login and get an auth token |
URL u = new URL("https://www.crushftp.com/"); |
HttpURLConnection urlc = (HttpURLConnection)u.openConnection(); |
urlc.setRequestMethod("POST"); |
urlc.setUseCaches(false); |
urlc.setDoOutput(true); |
urlc.getOutputStream().write(("command=login&username=demo&password=demo").getBytes("UTF8")); |
urlc.getResponseCode(); |
String cookie = urlc.getHeaderField("Set-Cookie"); |
String auth = cookie.substring(cookie.indexOf("CrushAuth=")+"CrushAuth=".length(),cookie.indexOf(";",cookie.indexOf("CrushAuth="))); |
urlc.disconnect(); |
|
|
//download a file using the auth token, and a post. Alternatively you could also just do a GET on the file. |
URL u = new URL("https://www.crushftp.com/"); |
HttpURLConnection urlc = (HttpURLConnection)u.openConnection(); |
urlc.setRequestMethod("POST"); |
urlc.setRequestProperty("Cookie", "CrushAuth="+auth+";"); |
urlc.setUseCaches(false); |
urlc.setDoInput(true); |
urlc.setDoOutput(true); |
urlc.getOutputStream().write(("command=download&path=/demo/KB2.txt").getBytes("UTF8")); |
int code = urlc.getResponseCode(); |
if (urlc.getURL().toExternalForm().indexOf("/WebInterface/login.html") >= 0) code = 302; |
if (code == 302) throw new Exception("Logged out".); |
InputStream in = new BufferedInputStream(urlc.getInputStream()); |
int bytesRead = 0; |
byte b[] = new byte[32768]; |
while (bytesRead >= 0) |
public class Example |
At line 34 changed 2 lines |
bytesRead = in.read(b); |
if (bytesRead >= 0) out.write(b,0,bytesRead); |
public String login(String username, String password) throws Exception |
{ |
//login and get an auth token |
URL u = new URL("https://www.crushftp.com/"); |
HttpURLConnection urlc = (HttpURLConnection)u.openConnection(); |
urlc.setRequestMethod("POST"); |
urlc.setUseCaches(false); |
urlc.setDoOutput(true); |
urlc.getOutputStream().write(("command=login&username="+username+"&password="+password).getBytes("UTF8")); |
urlc.getResponseCode(); |
String cookie = urlc.getHeaderField("Set-Cookie"); |
String auth = cookie.substring(cookie.indexOf("CrushAuth=")+"CrushAuth=".length(),cookie.indexOf(";",cookie.indexOf("CrushAuth="))); |
urlc.disconnect(); |
return auth; |
} |
public void download(String auth, String serverPath, String localPath) throws Exception |
{ |
//download a file using the auth token, and a post. Alternatively you could also just do a GET on the file. |
URL u = new URL("https://www.crushftp.com/"); |
HttpURLConnection urlc = (HttpURLConnection)u.openConnection(); |
urlc.setRequestMethod("POST"); |
urlc.setRequestProperty("Cookie", "CrushAuth="+auth+";"); |
urlc.setUseCaches(false); |
urlc.setDoInput(true); |
urlc.setDoOutput(true); |
String c2f = auth.substring(auth.length() - 4); |
urlc.getOutputStream().write(("command=download&path=/"+serverPath+"&c2f="+c2f).getBytes("UTF8")); |
int code = urlc.getResponseCode(); |
if (urlc.getURL().toExternalForm().indexOf("/WebInterface/login.html") >= 0) code = 302; |
if (code == 302) throw new Exception("Logged out."); |
InputStream in = new BufferedInputStream(urlc.getInputStream()); |
RandomAccessFile out = new RandomAccessFile(localPath,"rw"); |
int bytesRead = 0; |
byte b[] = new byte[32768]; |
while (bytesRead >= 0) |
{ |
bytesRead = in.read(b); |
if (bytesRead >= 0) out.write(b,0,bytesRead); |
} |
in.close(); |
out.close(); |
urlc.disconnect(); |
} |
public void upload(String auth, String serverPath, String localPath) throws Exception |
{ |
//upload a file using the auth token, and a PUT. |
URL u = new URL("https://www.crushftp.com"+serverPath); |
HttpURLConnection urlc = (HttpURLConnection)u.openConnection(); |
urlc.setRequestMethod("PUT"); |
urlc.setRequestProperty("Cookie", "CrushAuth="+auth+";"); |
urlc.setUseCaches(false); |
urlc.setChunkedStreamingMode(32768); |
urlc.setDoInput(true); |
urlc.setDoOutput(true); |
OutputStream out = urlc.getOutputStream(); |
RandomAccessFile in = new RandomAccessFile(localPath,"r"); |
int bytesRead = 0; |
byte b[] = new byte[32768]; |
while (bytesRead >= 0) |
{ |
bytesRead = in.read(b); |
if (bytesRead >= 0) out.write(b,0,bytesRead); |
} |
in.close(); |
out.close(); |
int code = urlc.getResponseCode(); |
if (urlc.getURL().toExternalForm().indexOf("/WebInterface/login.html") >= 0) code = 302; |
if (code == 302) throw new Exception("Logged out."); |
urlc.disconnect(); |
} |
public void doAction(String auth, String command, String param1, String param2) throws Exception |
{ |
URL u = new URL("https://www.crushftp.com/"); |
HttpURLConnection urlc = (HttpURLConnection)u.openConnection(); |
urlc.setRequestMethod("POST"); |
urlc.setRequestProperty("Cookie", "CrushAuth="+auth+";"); |
urlc.setUseCaches(false); |
urlc.setDoOutput(true); |
String c2f = auth.substring(auth.length() - 4); |
if (command.equalsIgnoreCase("delete")) urlc.getOutputStream().write(("command=delete&names="+param1+"&c2f="+c2f).getBytes("UTF8")); |
else if (command.equalsIgnoreCase("rename")) urlc.getOutputStream().write(("command=rename&name1="+param1+"&name2="+param2+"&c2f="+c2f).getBytes("UTF8")); |
else if (command.equalsIgnoreCase("makedir")) urlc.getOutputStream().write(("command=makedir&path="+param1+"&c2f="+c2f).getBytes("UTF8")); |
else if (command.equalsIgnoreCase("getXMLListing")) urlc.getOutputStream().write(("command=getXMLListing&path="+param1+"&c2f="+c2f).getBytes("UTF8")); |
int code = urlc.getResponseCode(); |
if (urlc.getURL().toExternalForm().indexOf("/WebInterface/login.html") >= 0) code = 302; |
if (code == 302) throw new Exception("Logged out."); |
urlc.disconnect(); |
} |
At line 37 removed 28 lines |
in.close(); |
urlc.disconnect(); |
|
|
//upload a file using the auth token, and a PUT. |
URL u = new URL("https://www.crushftp.com/demo/KB4.txt"); |
HttpURLConnection urlc = (HttpURLConnection)u.openConnection(); |
urlc.setRequestMethod("PUT"); |
urlc.setRequestProperty("Cookie", "CrushAuth="+auth+";"); |
urlc.setUseCaches(false); |
urlc.setChunkedStreamingMode(32768); |
urlc.setDoInput(true); |
urlc.setDoOutput(true); |
OutputStream out = urlc.getOutputStream(); |
int bytesRead = 0; |
byte b[] = new byte[32768]; |
while (bytesRead >= 0) |
{ |
bytesRead = in.read(b); |
if (bytesRead >= 0) out.write(b,0,bytesRead); |
} |
out.close(); |
|
int code = urlc.getResponseCode(); |
if (urlc.getURL().toExternalForm().indexOf("/WebInterface/login.html") >= 0) code = 302; |
if (code == 302) throw new Exception("Logged out".); |
urlc.disconnect(); |
|