【问题标题】:Exception using DropNet使用 DropNet 的异常
【发布时间】:2014-01-27 20:09:50
【问题描述】:

所以我刚开始使用外部 API 进行项目,但我有一个想法,我想看看我是否可以正确地将文件上传到 Dropbox。我已经完成了获取密钥和令牌的步骤,并且我已经开始测试但我遇到了一个错误:

DropNet.dll 中出现“System.ArgumentNullException”类型的未处理异常 附加信息:值不能为空。

更新:进一步查看错误,实际为 null 的参数将是“userLogin”**

这是我在错误之前的代码: //使用Dropnet;

DropNetClient _client = new DropNetClient("API_KEY", "API_SECRET", DropNetClient.AuthenticationMethod.OAuth1);

产生错误的代码:

var url = _client.BuildAuthorizeUrl();

还有我的代码跟随错误:

Process.Start(url);
_client.GetAccessTokenAsync((accessToken) =>
    {
        _client = new DropNetClient("API_KEY", "API_SECRET", accessToken.Token, accessToken.Secret);
    },
    (error) =>
    {
        MessageBox.Show(error.Message);
    });
try
{
    _client.UploadFile("/", "test.txt", ReadFile(@"D:\Classes\Documents\test.txt"));

    MessageBox.Show("Successfully uploaded to Dropbox.", "Uploaded to Dropbox");
}
catch (Exception dropboxEx)
{
    MessageBox.Show("Error: " + dropboxEx.Message);
}

我很确定这个错误与客户端的减速有关,也许我滥用了密钥和秘密?或者我的 OAuth uri 可能不正确,我不太确定,但万一这很重要,我的 Dropbox 开发者页面如下所示:

如果您需要更多信息,请告诉我,感谢您的帮助!

【问题讨论】:

    标签: c# exception-handling dropbox dropnet


    【解决方案1】:

    已修复:需要在我的 _client 减速下添加一个简单的代码片段

    UserLogin login = _client.GetToken();
    _client.UserLogin = login;
    

    【讨论】:

    • 考虑到库的性质,这似乎是一个非常重要的属性,他们可能会在使用它时使用更多的错误处理并返回一个有意义的异常。
    • @CodeCaster 是的,我完全同意,我能够通过使用 try {} catch (ArgmentNullException){} 来弄清楚它,然后显示哪个参数实际上为空。我发现很多第三方 API 的东西不太清晰,结构也不太好,尤其是在涉及错误(和处理它们)时
    • GetToken() 函数实际上设置了该属性本身,问题是您一开始没有调用它。您还可以使用 GetTokenAndBuildUrl() 函数获取令牌并在同一函数中返回登录 url。 github.com/dkarzon/DropNet/blob/master/DropNet/Client/…
    • 请注意,获取访问令牌后不需要重新创建_client对象。该函数会在客户端自动重新设置UserToken属性,返回给你保存记住用户。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    相关资源
    最近更新 更多