Hi dear Ian
Use this code:
import com.github.sardine.Version;
import com.github.sardine.impl.SardineImpl;
import com.github.sardine.impl.handler.VoidResponseHandler;
import com.github.sardine.impl.methods.HttpMkCol;
import org.apache.http.HttpHeaders;
import org.apache.http.HttpResponse;
import org.apache.http.HttpVersion;
import org.apache.http.client.methods.HttpHead;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.entity.InputStreamEntity;
import org.apache.http.impl.client.AbstractHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.params.HttpProtocolParams;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.VersionInfo;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.ProxySelector;
public class CSardine extends SardineImpl {
public CSardine(String username, String password) {
super(username, password);
}
@Override
protected HttpParams createDefaultHttpParams() {
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
String version = Version.getSpecification();
if (version == null) {
version = VersionInfo.UNAVAILABLE;
}
HttpProtocolParams.setUserAgent(params, "Sardine/" + version);
HttpProtocolParams.setUseExpectContinue(params, false);
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params,
HTTP.DEF_CONTENT_CHARSET.name());
HttpConnectionParams.setTcpNoDelay(params, true);
HttpConnectionParams.setSocketBufferSize(params, 8192);
HttpConnectionParams.setConnectionTimeout(params, 10000); return params;
}
@Override
protected AbstractHttpClient createDefaultClient(ProxySelector selector) {
SchemeRegistry schemeRegistry = this.createDefaultSchemeRegistry();
ClientConnectionManager cm = this.createDefaultConnectionManager(schemeRegistry);
HttpParams params = this.createDefaultHttpParams();
AbstractHttpClient c = new DefaultHttpClient(cm, params);
c.setRoutePlanner(this.createDefaultRoutePlanner(schemeRegistry, selector));
return c;
}
public HttpResponse head(String url) throws IOException {
return execute(new HttpHead(url));
}
public HttpResponse put(String url, FileInputStream fis, int available, String md5) throws Exception {
HttpResponse response;
HttpPut put = null;
InputStreamEntity entity;
try {
entity = new InputStreamEntity(fis, available);
put = new HttpPut(url);
put.setEntity(entity);
put.addHeader(HTTP.EXPECT_DIRECTIVE, HTTP.EXPECT_CONTINUE);
put.addHeader(HttpHeaders.CONTENT_MD5, md5);
put.addHeader(HttpHeaders.CONTENT_TYPE,
HTTP.DEF_CONTENT_CHARSET.name());
response = execute(put);
} catch (Exception e) {
abort(put);
throw e;
} finally {
releaseConnection(put);
}
return response;
}
private void abort(HttpRequestBase requestBase) {
if (requestBase != null) {
try {
requestBase.abort();
} catch (Exception ignored) {}
}
}
private void releaseConnection(HttpRequestBase requestBase) {
if (requestBase != null) {
try {
requestBase.releaseConnection();
} catch (Exception ignored) {}