2010-12-22 76 views
3

這是最基本的例子,它拋出一個異常。TweetSharp爲什麼拋出異常?

// 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 

注:我使用的是單聲道2.6在Ubuntu 10.10 64位。

回答

1

對於初學者,你正在創建一個新的'requestToken'變量,一個空值的空值,然後試圖使用它來獲得訪問令牌。您需要使用您實際收到的來自GetRequestToken(您稱爲'請求'的那個)的電話。

+1

嗯,我應該更清楚一點,但錯誤是第一次調用:`OAuthRequestToken request = service.GetRequestToken();` – 2010-12-22 18:07:03

0

我有同樣的問題,不能自己重現它,但它發生在服務器端與一些客戶端定期。堆棧跟蹤和錯誤描述與您得到的內容類似:

InnerException:值不能爲空。參數名:查詢處System.Compat.Web.HttpUtility.ParseQueryString(字符串 查詢)在TweetSharp.TwitterService.GetRequestToken(字符串回調)

System.Compat.Web.HttpUtility.ParseQueryString(查詢字符串,編碼 編碼)

我看着TweetSharp代碼,它現在可能已經過時了(v.2.3)。如果問題在新版本中修復,請讓我知道。看來,錯誤發生在這裏:

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

看來,請求失敗,無論出於何種原因Twitter的服務器,但沒有檢查是否response.Content是空的。然後ParseQueryString拋出異常。

我的解決方案只是忽略這個錯誤,並允許用戶再試一次。看來,網絡錯誤,代理服務器或不穩定的連接可能會導致此錯誤。

相關問題