从我的Android设备上传文件时,dropbox取消链接异常

时间:2013-11-21 09:30:24

标签: android android-asynctask dropbox

在我的Android应用程序中,我想从我的Android设备上传文件到dropbox,但是显示异常:

11-21 09:15:00.625: W/DefaultRequestDirector(951): Authentication error: Unable to respond to any of these challenges: {oauth=WWW-Authenticate: OAuth realm="https://api.dropbox.com/"}
11-21 09:15:00.625: I/System.out(951): exception 2
11-21 09:15:00.635: W/System.err(951): com.dropbox.client2.exception.DropboxUnlinkedException
11-21 09:15:00.635: W/System.err(951):  at com.dropbox.client2.RESTUtility.parseAsJSON(RESTUtility.java:261)
11-21 09:15:00.635: W/System.err(951):  at com.dropbox.client2.RESTUtility.execute(RESTUtility.java:411)
11-21 09:15:00.635: W/System.err(951):  at com.dropbox.client2.DropboxAPI$BasicUploadRequest.upload(DropboxAPI.java:1080)
11-21 09:15:00.645: W/System.err(951):  at com.dropbox.client2.DropboxAPI.putFile(DropboxAPI.java:1421)
11-21 09:15:00.645: W/System.err(951):  at com.hcl.clouddrive.dropbox.DropboxUploadItemsTask.doInBackground(DropboxUploadItemsTask.java:48)
11-21 09:15:00.645: W/System.err(951):  at com.hcl.clouddrive.dropbox.DropboxUploadItemsTask.doInBackground(DropboxUploadItemsTask.java:1)
11-21 09:15:00.645: W/System.err(951):  at android.os.AsyncTask$2.call(AsyncTask.java:287)
11-21 09:15:00.645: W/System.err(951):  at java.util.concurrent.FutureTask.run(FutureTask.java:234)
11-21 09:15:00.645: W/System.err(951):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
11-21 09:15:00.645: W/System.err(951):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
11-21 09:15:00.645: W/System.err(951):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
11-21 09:15:00.655: W/System.err(951):  at java.lang.Thread.run(Thread.java:856)**

这是我创建连接的Activity代码:

AppKeyPair accessTokenPair = new AppKeyPair(APP_KEY, APP_SECRET);

                AccessTokenPair accessToken = new AccessTokenPair(
                        ACCESS_KEY_NAME, ACCESS_SECRET_NAME);

                AndroidAuthSession session = new AndroidAuthSession(
                        accessTokenPair, AccessType.DROPBOX, accessToken);

                DropboxAPI<AndroidAuthSession> mApi = new DropboxAPI<AndroidAuthSession>(
                        session);
                Log.e("CONNECTION ACTIVITY CHECK", mApi.getSession()
                        .isLinked() + "");

                if (mApi.getSession().isLinked() == false) {
                    mApi.getSession().startAuthentication(
                            getApplicationContext());
                }

                DropboxUploadItemsTask dropboxUploadItemsTask = new DropboxUploadItemsTask(
                        getApplicationContext(), mApi, filepath);
                dropboxUploadItemsTask.execute();
                finish();

这是上传任务完成的代码:

public class DropboxUploadItemsTask extends AsyncTask<Void, Long, Boolean> {

private Context uContext;
private DropboxAPI<?> uApi;
private String uPath;
private String mErrorMsg;
private boolean flag = false;

private InputStream uploadFile;
private File file;

SharedPreferences preference;

public DropboxUploadItemsTask(Context context, DropboxAPI<?> api, String filePath) {
    uContext = context;
    uApi = api;
    uPath = filePath;
    System.out.println("So I could came this far to Upload file!!");
    uApi.getSession();
}

@Override
protected Boolean doInBackground(Void... params) {

    System.out.println("Got in background");
    System.out.println(uApi);
    System.out.println(uPath);
    file = new File(uPath);
    try {
        uploadFile = new FileInputStream(file);
        System.out.println("The file id ready");
        Entry upload = uApi.putFile("/" + file.getName(), uploadFile, file.length(), null, null);
        flag = true;
        System.out.println(upload.rev);

    } catch (FileNotFoundException e) {
        System.out.println("exception 1");
        e.printStackTrace();
    } catch (DropboxException e) {
        System.out.println("exception 2");
        e.printStackTrace();
    }


    return flag;
}

@Override
protected void onPostExecute(Boolean result) {
    if (result) {
        showToast("File is uploaded.");
        if(file.exists()){
            new File(uPath).delete();
            System.out.println(file.exists());
        }
    } else {
        showToast(mErrorMsg);
    }
}

private void showToast(String msg) {
    Toast error = Toast.makeText(uContext, msg, Toast.LENGTH_LONG);
    error.show();
}

}

0 个答案:

没有答案