我正在自动登录过程,在这样做的过程中,我会得到不同类型的密码,其中包含特殊字符。
我的代码如下所示,我尝试了UrlEncode()密码,但这并不起作用。如果您在我的代码中发现任何问题或我可以找到解决方法,请告诉我。我的密码是" aab $#*#%232"和" @#:.; $%^& + -_ h1&" :
string uriString = "http://" + IP + URI ;
string postData = "";
TraceLine("The uri string is " + uriString);
foreach (string key in values.AllKeys)
{
TraceLine(key + " " + values[key]);
postData += key + "=" + values[key] + "&";}}
if (postData.Length > 0) {
postData = postData.TrimEnd(postData[postData.Length - 1]);
}
TraceLine("The postData string is " + postData);
HttpWebRequest req =(HttpWebRequest)System.Net.WebRequest.Create(uriString);
req.ContentType = "application/x-www-form-urlencoded";
req.KeepAlive = false;
req.Method = "POST";
byte[] bytes = System.Text.Encoding.ASCII.GetBytes(postData);
req.ContentLength=bytes.Length;
System.IO.Stream os = req.GetRequestStream();
os.Write(bytes, 0, bytes.Length);
os.Close();}
答案 0 :(得分:2)
你实际上得到了正确的结果。请参阅,字符串已转义,以使其与通过HTTP发送兼容。你想要:“aab $##%232”但你得到了:“aab%24%23 %23%25232”
%24 = $
%23 =#
%25 =%
为了获得你想要的字符串,你只需要使用Uri.UnescapeDataString方法解除字符串的转义。
string str = Uri.UnescapeDataString("aab%24%23*%23%25232");
我仍然不鼓励您以纯文本形式发送和接收敏感数据,即使它已被转义。也许来自加密的东西有帮助吗?