import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
+import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
throws IOException {
URLConnection conn = openConnectionWithCookies(url, support);
- if (postParams != null) {
+ if (postParams != null && conn instanceof HttpURLConnection) {
StringBuilder postData = new StringBuilder();
for (Map.Entry<String, String> param : postParams.entrySet()) {
if (postData.length() != 0)
}
conn.setDoOutput(true);
+ ((HttpURLConnection) conn).setRequestMethod("POST");
+ conn.setRequestProperty("Content-Type",
+ "application/x-www-form-urlencoded");
+ conn.setRequestProperty("charset", "utf-8");
OutputStreamWriter writer = new OutputStreamWriter(
conn.getOutputStream());
* in case of I/O error
*/
public File addToCache(InputStream in, String uniqueID) throws IOException {
- File file = getCached(new File(uniqueID).toURI().toURL());
+ File file = getCached(uniqueID);
IOUtils.write(in, file);
return file;
}
+ /**
+ * Return the {@link InputStream} corresponding to the given unique ID, or
+ * NULL if none found.
+ *
+ * @param uniqueID
+ * the unique ID
+ *
+ * @return the content or NULL
+ */
+ public InputStream getFromCache(String uniqueID) {
+ File file = getCached(uniqueID);
+ if (file.exists()) {
+ try {
+ return new MarkableFileInputStream(new FileInputStream(file));
+ } catch (FileNotFoundException e) {
+ }
+ }
+
+ return null;
+ }
+
/**
* Clean the cache (delete the cached items).
*
*/
private File getCached(URL url) {
String name = url.getHost();
- if (name == null || name.length() == 0) {
+ if (name == null || name.isEmpty()) {
name = url.getFile();
} else {
name = url.toString();
}
- name = name.replace('/', '_').replace(':', '_');
+ return getCached(name);
+ }
+
+ /**
+ * Get the cache resource from the cache if it is present for this unique
+ * ID.
+ *
+ * @param url
+ * the url
+ * @return the cached version if present, NULL if not
+ */
+ private File getCached(String uniqueID) {
+ uniqueID = uniqueID.replace('/', '_').replace(':', '_')
+ .replace("\\", "_");
- return new File(dir, name);
+ return new File(dir, uniqueID);
}
/**