//quote the input dict values
//note: the return result for first para no '&'
public string quoteParas(Dictionary<string, string> paras, bool spaceToPercent20 = true)
{
string quotedParas = "";
bool isFirst = true;
string val = "";
foreach (string para in paras.Keys)
{
if (paras.TryGetValue(para, out val))
{
string encodedVal = "";
if (spaceToPercent20)
{
//encodedVal = HttpUtility.UrlPathEncode(val);
//encodedVal = Uri.EscapeDataString(val);
//encodedVal = Uri.EscapeUriString(val);
encodedVal = HttpUtility.UrlEncode(val).Replace("+", "%20");
}
else
{
encodedVal = HttpUtility.UrlEncode(val); //space to +
}
if (isFirst)
{
isFirst = false;
quotedParas += para + "=" + encodedVal;
}
else
{
quotedParas += "&" + para + "=" + encodedVal;
}
}
else
{
break;
}
}
return quotedParas;
}
例 5.6. quoteParas 的使用范例
Dictionary<string, string> postDataDict = genPostsrfPostDict(html, login, passwd, isKeepLogin);
postData += quoteParas(postDataDict);