这是最可能的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。
答案 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抛出异常。
我的解决方案只是忽略此错误并允许用户再试一次。似乎网络错误,代理服务器或不稳定的连接可能会导致此错误。