//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);