使用Dropbox Java API将文件上载到Dropbox

我想使用Java API for DropBox上传文件。 以下代码为我提供了oauth_token和oauth_secret。 但是当我尝试上传文件时,我得到一个例外。
Java Class

 package com.dropbox.client; import com.dropbox.client.DropboxAPI.Config; import java.io.File; import java.net.URL; import java.util.HashMap; import java.util.Map; /** * * @author Charan */ public class DBmain { public DBmain() { System.setProperty("java.net.useSystemProxies", "true"); Map configuration= new HashMap(); configuration.put("consumer_key", "XXXXXXXXXXXXXXXX"); configuration.put("consumer_secret", "XXXXXXXXXXXXXXXX"); configuration.put("request_token_url", "http://api.dropbox.com/0/oauth/request_token"); configuration.put("access_token_url", "http://api.dropbox.com/0/oauth/access_token"); configuration.put("authorization_url", "http://api.dropbox.com/0/oauth/authorize"); configuration.put("port",80); //configuration.put("trusted_access_token_url","http://api.getdropbox.com/0/token"); configuration.put("server","api.getdropbox.com"); configuration.put("content_server","api-content.dropbox.com"); String username="myMailAddress@domain.com"; String password="myPassword"; try { Authenticator auth = new Authenticator(configuration); String url = auth.retrieveRequestToken(""); String access_key = auth.getTokenKey(); String access_secret = auth.getTokenSecret(); System.out.println(access_key); System.out.println(access_secret); DropboxAPI api = new DropboxAPI(); DropboxAPI.Config conf = api.new Config(configuration); api.authenticateToken("XXXXXXXXXXXX", "XXXXXXXXXXX", conf); System.out.println(api.isAuthenticated()); URL resource = this.getClass().getResource("/config/testing.json"); File f= new File(resource.toURI()); api.putFile("dropbox", "/Project", f); //api.accountInfo(); //even this method gives me a exception } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { new DBmain(); } } 

Exception

 Exception in thread "main" java.lang.NoSuchMethodError: org.apache.http.protocol.BasicHttpContext: method ()V not found at org.apache.http.impl.client.DefaultHttpClient.createHttpContext(DefaultHttpClient.java:205) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:532) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) at com.dropbox.client.DropboxClient.putFile(DropboxClient.java:299) at com.dropbox.client.DropboxAPI.putFile(DropboxAPI.java:463) at com.dropbox.client.DBmain.(DBmain.java:58) at com.dropbox.client.DBmain.main(DBmain.java:70) Java Result: 1 

Some extra info http://i296.photobucket.com/albums/mm176/charanraj1191g/dropbox.png

编辑日期:18-6-2011

我将httpclient-4.0-beta1.jar和httpcore-4.0-alpha6.jar分别更改为httpclient-4.0.jar和httpcore-4.0.1.jar,我不再获得上述exception[ java.lang.NoSuchMethodError ]此stackoverflow问题帮我解决了这个问题: java.lang.NoSuchMethodError:org.apache.http.protocol.BasicHttpContext:method ()V not found

但是现在我在执行API的任何方法时都会收到UnknownhostException

 com.dropbox.client.DropboxException: java.net.UnknownHostException: api.getdropbox.com:80 at com.dropbox.client.RESTUtility.request(RESTUtility.java:250) at dump.DropboxClient.accountInfo(DropboxClient.java:121) at com.charan.client.DBmain.(DBmain.java:57) at com.charan.client.DBmain.main(DBmain.java:65) Caused by: java.net.UnknownHostException: api.getdropbox.com:80 at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436) at java.net.Socket.connect(Socket.java:525) at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:123) at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:123) at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:147) at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:101) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:381) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554) at com.dropbox.client.RESTUtility.executeRequest(RESTUtility.java:172) at com.dropbox.client.RESTUtility.request(RESTUtility.java:248) ... 3 more 

你应该使用http-client 4.0.3 jar

您的类不应该在com.dropbox.client包中。 尝试将其移动到另一个(即com.yourname.client )。 看起来您可能正在创建名称冲突并无意中覆盖了Dropbox客户端API中的某些内容。

您已指定api.getdropbox.com:80作为主机名。 请尝试使用api.getdropbox.com