Stuck at File Upload Download App in DropBox using java

独自空忆成欢 提交于 2019-12-11 06:51:51

问题


I am working on Dropbox api using java. first app is to upload and download file in dropbox account. I got a token to authenticate with dropbox but when i try to uploading file in account i get bad request error like:

Exception in thread "main" com.dropbox.core.DbxException$BadResponse: unexpected response code: 401
    at com.dropbox.core.DbxClient$4.handle(DbxClient.java:274)
    at com.dropbox.core.DbxClient$4.handle(DbxClient.java:270)
    at com.dropbox.core.DbxRequestUtil.doGet(DbxRequestUtil.java:265)
    at com.dropbox.core.DbxClient.doGet(DbxClient.java:1912)
    at com.dropbox.core.DbxClient.getAccountInfo(DbxClient.java:270)
    at com.prit.net.Main.main(Main.java:50)

My code is below package com.prit.net;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.Locale;
import com.dropbox.core.DbxAppInfo;
import com.dropbox.core.DbxClient;
import com.dropbox.core.DbxEntry;
import com.dropbox.core.DbxException;
import com.dropbox.core.DbxRequestConfig;
import com.dropbox.core.DbxWebAuthNoRedirect;
import com.dropbox.core.DbxWriteMode;
public class Main {

    public static void main(String[] args) throws IOException, DbxException, URISyntaxException {
    // Get your app key and secret from the Dropbox developers website.
    final String APP_KEY = "mykey"; // change with yours
    final String APP_SECRET = "mysecret"; // change with yours

    DbxAppInfo appInfo = new DbxAppInfo(APP_KEY, APP_SECRET);

    DbxRequestConfig config = new DbxRequestConfig("JavaTutorial/1.0",Locale.getDefault().toString());
    DbxWebAuthNoRedirect webAuth = new DbxWebAuthNoRedirect(config, appInfo);
    // Have the user sign in and authorize your app.
    String authorizeUrl = webAuth.start();
    //Desktop.getDesktop().browse(new URL(authorizeUrl).toURI());
    // System.out.println("1. Go to: " + authorizeUrl);
    // System.out
    // .println("2. Click \"Allow\" (you might have to log in first)");
    // System.out.println("3. Copy the authorization code.");
    // String code = new BufferedReader(new InputStreamReader(System.in))
    // .readLine().trim();
    //DbxAuthFinish authFinish = webAuth.finish(code);
    // System.out.println("Access token is:");
    // System.out.println(authFinish.accessToken.toString());

    // save the value of myToken to a file for future use
    String myToken = "myTokensecretkeyxxxxxxxxxxxxxxxxx"; // change with
                                                                // yours
    // DbxClient client = new DbxClient(config, authFinish.accessToken);
    DbxClient client = new DbxClient(config, myToken);
    System.out.println(config);
    System.out.println(myToken);

    System.out.println("check1");
    File inputFile = new File("C:\\Dev\\foo.txt");
    System.out.println("check2");
    FileInputStream inputStream = new FileInputStream(inputFile);
    System.out.println("check3");
    try {
        DbxEntry.File uploadedFile = client.uploadFile("/FileApiDemo/fooup2.txt",
                DbxWriteMode.add(), inputFile.length(), inputStream);
        System.out.println("Uploaded: " + uploadedFile.toString());
    } catch (Exception e) {

        e.printStackTrace();
    } finally {
        inputStream.close();
    }

    DbxEntry.WithChildren listing = client.getMetadataWithChildren("/FileApiDemo");
    System.out.println("Files in the root path:");
    for (DbxEntry child : listing.children) {
        System.out.println("    " + child.name + ": " + child.toString());
    }

    // download file
        FileOutputStream outputStream = new FileOutputStream("C:\\Dev\\downloadedfile.txt");
        try {
            DbxEntry.File downloadedFile = client.getFile("/FileApiDemo/fooup2.txt", null,  outputStream);
            System.out.println("Metadata: " + downloadedFile.toString());
        }     finally {
            outputStream.close();
        }

    }

} `

回答1:


Double check the value of myToken. The commented code you have above that presumably gets you a working access token, right? If so, make sure the access token you see at the end of that flow is the one you're saving and using on subsequent runs.




回答2:


Here is a basic upload example to Dropbox. The example is working with DropBox API v2.

the client variable in the example is from using the DbxClientV2....

try
        {
            File file = new File("C:\\... Storage location of file on local system");
            //reads file as input for the method to dropbox
            InputStream fileupload = new FileInputStream(file);
            //path in dropbox account to store the file 
            // if want to store it in root just put '/'
            //if want to store file in a folder '/foldername/'
            client.files().uploadBuilder("/" + file.getName())
                    .withMode(WriteMode.OVERWRITE)//always overwrites the existing file in the dropbox folder
                    .uploadAndFinish(fileupload);
            JOptionPane.showMessageDialog(null, "File uploaded to dropbox");
        }
        //exception handled
        catch (DbxException e)
        {
            //error message for uploading file to dropboxcloud
            JOptionPane.showMessageDialog(null, "Unable to upload file to Cloud \n Error: " + e);
        }
        catch (IOException e)
        {
            JOptionPane.showMessageDialog(null, "Unable to upload file to cloud \n Error: " + e);
        }

This basic example does not include the progress of file upload to cloud or any other checks.

Hope this is helpful



来源:https://stackoverflow.com/questions/21831281/stuck-at-file-upload-download-app-in-dropbox-using-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!