现有一个程序可以成功模拟普通的POST登陆,可是在某些以multipart/form-data方式提交数据的网站怎么也无法登陆,请高手帮忙啊。
HttpWebRequest httpWebRequest = null;
HttpWebResponse httpWebResponse = null;
Stream inputStream = null;
Stream outputStream = null;
StreamReader streamReader = null;
string BoundaryString = "-----------------------------"+DateTime.Now.Ticks.ToString("x");
Encoding encoding = Encoding.Default;
string htmlString = string.Empty;
StringBuilder sb = new StringBuilder();
sb.Append("--"+BoundaryString + "\r\n");
sb.Append("Content-Disposition: form-data; name=\"user\"\r\n");
sb.Append(Environment.NewLine);
sb.Append(user+"\r\n");
sb.Append("--" + BoundaryString + "\r\n");
sb.Append("Content-Disposition: form-data; name=\"UserIDConfirmed\"\r\n");
sb.Append(Environment.NewLine);
sb.Append("1\r\n");
sb.Append("--" + BoundaryString + "\r\n");
sb.Append("Content-Disposition: form-data; name=\"multi\"\r\n");
sb.Append(Environment.NewLine);
sb.Append(Environment.NewLine);
sb.Append("--" + BoundaryString + "\r\n");
sb.Append("Content-Disposition: form-data; name=\"UserID\"\r\n");
sb.Append(Environment.NewLine);
sb.Append(user+"\r\n");
sb.Append("--" + BoundaryString + "\r\n");
sb.Append("Content-Disposition: form-data; name=\"Passwort\"\r\n");
sb.Append(Environment.NewLine);
sb.Append(pass+"\r\n");
sb.Append("--" + BoundaryString + "--\r\n");
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
byte[] arrB = encoding.GetBytes(sb.ToString());
httpWebRequest = WebRequest.Create(urlString) as HttpWebRequest;
httpWebRequest.Method = "POST";
httpWebRequest.KeepAlive = true;
httpWebRequest.Accept = "*/*";
httpWebRequest.Referer = addr;
httpWebRequest.CookieContainer = cookieContainer;
httpWebRequest.ContentLength = arrB.Length;
httpWebRequest.Timeout = 500000;
httpWebRequest.ContentType = "multipart/form-data; boundary="+BoundaryString;
inputStream = httpWebRequest.GetRequestStream();
inputStream.Write(arrB, 0, arrB.Length);
httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse;
outputStream = httpWebResponse.GetResponseStream();
streamReader = new StreamReader(outputStream, encoding);
htmlString = streamReader.ReadToEnd();
HttpWebRequest httpWebRequest = null;
HttpWebResponse httpWebResponse = null;
Stream inputStream = null;
Stream outputStream = null;
StreamReader streamReader = null;
string BoundaryString = "-----------------------------"+DateTime.Now.Ticks.ToString("x");
Encoding encoding = Encoding.Default;
string htmlString = string.Empty;
StringBuilder sb = new StringBuilder();
sb.Append("--"+BoundaryString + "\r\n");
sb.Append("Content-Disposition: form-data; name=\"user\"\r\n");
sb.Append(Environment.NewLine);
sb.Append(user+"\r\n");
sb.Append("--" + BoundaryString + "\r\n");
sb.Append("Content-Disposition: form-data; name=\"UserIDConfirmed\"\r\n");
sb.Append(Environment.NewLine);
sb.Append("1\r\n");
sb.Append("--" + BoundaryString + "\r\n");
sb.Append("Content-Disposition: form-data; name=\"multi\"\r\n");
sb.Append(Environment.NewLine);
sb.Append(Environment.NewLine);
sb.Append("--" + BoundaryString + "\r\n");
sb.Append("Content-Disposition: form-data; name=\"UserID\"\r\n");
sb.Append(Environment.NewLine);
sb.Append(user+"\r\n");
sb.Append("--" + BoundaryString + "\r\n");
sb.Append("Content-Disposition: form-data; name=\"Passwort\"\r\n");
sb.Append(Environment.NewLine);
sb.Append(pass+"\r\n");
sb.Append("--" + BoundaryString + "--\r\n");
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
byte[] arrB = encoding.GetBytes(sb.ToString());
httpWebRequest = WebRequest.Create(urlString) as HttpWebRequest;
httpWebRequest.Method = "POST";
httpWebRequest.KeepAlive = true;
httpWebRequest.Accept = "*/*";
httpWebRequest.Referer = addr;
httpWebRequest.CookieContainer = cookieContainer;
httpWebRequest.ContentLength = arrB.Length;
httpWebRequest.Timeout = 500000;
httpWebRequest.ContentType = "multipart/form-data; boundary="+BoundaryString;
inputStream = httpWebRequest.GetRequestStream();
inputStream.Write(arrB, 0, arrB.Length);
httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse;
outputStream = httpWebResponse.GetResponseStream();
streamReader = new StreamReader(outputStream, encoding);
htmlString = streamReader.ReadToEnd();
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货