为什么TweetSharp会抛出异常?

时间:2010-12-22 04:52:48

标签: c# exception tweetsharp

这是最可能的BASIC示例,它正在抛出异常。

// Pass your credentials to the service
TwitterService service = new TwitterService(API_KEY,API_SECRET);
service.UserAgent = "StackBot";

// Step 1 - Retrieve an OAuth Request Token
OAuthRequestToken request = service.GetRequestToken();

// Step 2 - Redirect to the OAuth Authorization URL
Uri uri = service.GetAuthorizationUri(request);
Console.WriteLine(uri.ToString());

// Step 3 - Exchange the Request Token for an Access Token
string verifier = "123456"; // <-- This is input into your application by your user
OAuthRequestToken requestToken = new OAuthRequestToken();
OAuthAccessToken access = service.GetAccessToken(requestToken, verifier);

以下是例外:

Unhandled Exception: System.ArgumentNullException: Argument cannot be null.
Parameter name: query
  at System.Compat.Web.HttpUtility.ParseQueryString (System.String query, System.Text.Encoding encoding) [0x00000] in :0 
  at System.Compat.Web.HttpUtility.ParseQueryString (System.String query) [0x00000] in :0 
  at TweetSharp.TwitterService.GetRequestToken (System.String callback) [0x00000] in :0 
  at TweetSharp.TwitterService.GetRequestToken () [0x00000] in :0 
  at Namespace.Class.Main (System.String[] args) [0x00049] in Main.cs:179

注意:我在Ubuntu 10.10 64位上使用Mono 2.6。

2 个答案:

答案 0 :(得分:1)

对于初学者,您正在创建一个新的'requestToken'变量,一个空值,具有空值,然后尝试使用它来获取访问令牌。你需要使用你通过调用GetRequestToken(你称之为'request'的那个)实际收到的那个。

答案 1 :(得分:0)

我遇到了同样的问题,我自己无法重现它,但它会在服务器端定期与某些客户端发生。堆栈跟踪和错误描述与您所获得的类似:

  

InnerException:值不能为null。参数名称:查询位于   System.Compat.Web.HttpUtility.ParseQueryString(String query,Encoding   System.Compat.Web.HttpUtility.ParseQueryString(String。)   查询)在TweetSharp.TwitterService.GetRequestToken(String callback)

我查看了TweetSharp代码,现在可能有点过时了(v.2.3)。如果问题在新版本中修复,请告诉我。似乎错误发生在这里:

    var response = _oauth.Request(request);
    SetResponse(response);
    var query = HttpUtility.ParseQueryString(response.Content);

似乎对twitter服务器的请求因任何原因都失败了,但是没有检查response.Content是否为空。然后ParseQueryString抛出异常。

我的解决方案只是忽略此错误并允许用户再试一次。似乎网络错误,代理服务器或不稳定的连接可能会导致此错误。