RestSharp:签名库生成中的UrlEncode返回无效字符串

时间:2012-05-01 07:27:26

标签: twitter twitter-oauth windows-runtime restsharp

我正在使用RestSharp(http://restsharp.org/)在win8的twitter客户端上工作,我遇到了这样的问题: 当我用RestClient发布新推文时

var timeLine = new RestRequest("/1/statuses/update.json", Method.POST);
var txt = "Hello world";
timeLine.AddParameter("status", txt);

一切都很有效,但如果我添加更复杂的状态,如:

var txt = "Hello, World! What a nice day! #1May";
timeLine.AddParameter("status", txt);

我收到401错误。在我看到的调试器中,Signature Base String中的状态参数不正确。我有:

status%3DHello%2C%2520World%21%2520What%2520a%2520nice%2520day%21%2520%231May

和右字符串(来自dev.twitter.com):

status%3DHello%252C%2520World%2521%2520What%2520a%2520nice%2520day%2521%2520%25231May

你可以看到,标点符号,!#和其他编码不正确。我该如何解决? 签名库生成和编码在/Authenticators/OAuth/OAuthTools.cs

1 个答案:

答案 0 :(得分:0)

我在网站上显示Twitter Feed时遇到同样的问题。因此,我使用此代码转换文本。

Regex.Replace(str,“@(。*?):”,@“@http://twitter.com/#!/ $ 1> $ 1:”);