0

嗨,我有一个使用 /1.1/search/tweets.json 的应用程序。

我正在使用以下参数发出请求:

查询 =“Hello World”计数 = 100

private static object MakeRequest(NameValueCollection parameters)
        {
            var client = new RestClient("https://api.twitter.com")
            {
                Authenticator = OAuth1Authenticator.ForProtectedResource(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, SECRET_ACCESS_TOKEN)
            };

            var request = new RestRequest("/1.1/search/tweets.json", Method.GET);
            foreach (string key in parameters)
            {

                request.AddParameter(key, HttpUtility.UrlEncode(parameters[key]));
            }

            var response = client.Execute(request);
            return JsonConvert.DeserializeObject(response.Content);


        }

它第一次运行良好,但如果查询超过 100 条推文,则会出现“无法验证您”的消息。

可能有什么问题?

4

1 回答 1

0

经过一些调试,我发现了问题。

主要问题是 HttpUtility.UrlEncode() 将“Hello World”转换为“Hello+World”,如果我们有超过 100 个 twits,则从请求返回的查询是“Hello%2bWorld”。将其转换为“Hello +World”,一切顺利。

所以基本上你必须非常小心 URL 编码。

于 2013-11-14T20:05:28.343 回答