使用回调URL的REST API .NET 4.5后端应用程序。
只是陈述一些我已经做过的事情......
我的应用程序交叉发布(按用户)可以正常使用Twitter。只有包含未保留的字符和表情符号时,问题才可重现。有没有人有解决这个确切问题的真实经验?
答案 0 :(得分:0)
Http.CS 评论以下......
//headers["Accept-Language"] = "en-us,en;q=0.5";
//headers["Accept-Encoding"] = "gzip,deflate";
//headers["Accept-Charset"] = "utf-8;q=0.7,*;q=0.7";
UrlEncoder.cs
public static string UrlEncode(string value)
{
const string ReservedChars = @"`!@#$%^&*()_-+=.~,:;'?/|\[] ";
const string UnReservedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~";
var result = new StringBuilder();
if (string.IsNullOrWhiteSpace(value))
return string.Empty;
foreach (string symbol in value.AsCodePoints())
{
if (symbol.Length == 1 && UnReservedChars.IndexOf(symbol, StringComparison.CurrentCulture) != -1)
{
result.Append(symbol);
}
else if (symbol.Length == 1 && ReservedChars.IndexOf(symbol, StringComparison.CurrentCulture) != -1)
{
result.Append('%' + String.Format("{0:X2}", (int)symbol.ToCharArray().First()).ToUpper());
}
else
{
string symbolString = symbol;
var encoded = Uri.EscapeDataString(symbolString).ToUpper();
if (!string.IsNullOrWhiteSpace(encoded))
{
result.Append(encoded);
}
}
}
return result.ToString();
}
OAUTH没有任何改变。这完全是关于角色的编码。