Почему TweetSharp выбрасывает исключение? - PullRequest
3 голосов
/ 22 декабря 2010

Это самый базовый возможный пример, и он вызывает исключение.

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

Примечание: Я использую Mono 2.6 на 64-битной Ubuntu 10.10.

Ответы [ 2 ]

1 голос
/ 22 декабря 2010

Для начала вы создаете новую переменную requestToken, пустую, с нулевыми значениями, а затем пытаетесь использовать ее для получения токена доступа.Вам нужно использовать тот, который вы фактически получили от вызова GetRequestToken (тот, который вы называете «запросом»).

0 голосов
/ 18 сентября 2014

У меня была такая же проблема, я не могу воспроизвести ее сам, но это периодически происходит на стороне сервера с некоторыми клиентами.Трассировка стека и описание ошибки похожи на то, что вы получили:

InnerException: значение не может быть нулевым.Имя параметра: запрос в System.Compat.Web.HttpUtility.ParseQueryString (запрос строки, кодировка) в System.Compat.Web.HttpUtility.ParseQueryString (запрос строки) в TweetSharp.TwitterService.GetRequestToken (обратный вызов String 1005)*

Я посмотрел на код TweetSharp, он может быть немного устаревшим в настоящее время (v. 2.3).Пожалуйста, дайте мне знать, если проблема исправлена ​​в более новых версиях.Кажется, что здесь происходит ошибка:

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

Кажется, что запрос к серверу Twitter по какой-то причине не прошел, но нет проверки, если response.Content пуст.Затем ParseQueryString выдает исключение.

Мое решение состояло в том, чтобы просто игнорировать эту ошибку и позволить пользователю повторить попытку.Похоже, что ошибка сети, прокси-сервер или нестабильное соединение могут быть причиной этой ошибки.

...