为什么在封装字符串的时候:符号&会变成其它的符号?
在函数Post中,调用封装字符串的函数PostData,正常的结果应该是:
app_key=appkey&method=method&session=session×tamp=2012-08-04%2010%3A43%3A21&format=xml&v=2.0&sign_method=md5
可是变成了下面这个,不知道为什么(红色标注)
app_key=appkey&method=method&session=session×tamp=2012-08-04%2010%3A43%3A21&format=xml&v=2.0&sign_method=md5
public string Post()
{
IDictionary<string, string> param_T = new Dictionary<string, string>();
param_T.Add("app_key", "appkey");
param_T.Add("method", "method");
param_T.Add("session", "session");
param_T.Add("timestamp", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
param_T.Add("format", "xml");
param_T.Add("v", "2.0");
param_T.Add("sign_method", "md5");
}
protected static string PostData(IDictionary<string, string> parameters)
{
StringBuilder postData = new StringBuilder();
bool hasParam = false;
IEnumerator<KeyValuePair<string, string>> dem = parameters.GetEnumerator();
while (dem.MoveNext())
{
string name = dem.Current.Key;
string value = dem.Current.Value;
// 忽略参数名或参数值为空的参数
if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(value))
{
if (hasParam)
{
postData.Append("&");
}
postData.Append(name);
postData.Append("=");
postData.Append(Uri.EscapeDataString(value));
hasParam = true;
}
}
return postData.ToString();
}