111,094
社区成员




string boundary =DateTime.Now.Ticks.ToString("x");
这是我生成的 boundary 是不是跟网站上的不一样导致的 public static bool HttpPostS(string url, string postdata, string referer, string boundary)
{
bool st = true;
try
{
string result = "";
CookieContainer cCurrent = new CookieContainer();
Uri u = new Uri(url);
cCurrent.Add(u, new Cookie("JSESSIONID", jsessionId));
cCurrent.Add(u, new Cookie("logonUsername", XF_Main.UserName));
//if (P3p != null)
//{
// cCurrent.Add(u, new Cookie("P3P", P3p));
//}
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
var memStream = new MemoryStream();
// 边界符
var beginBoundary = Encoding.ASCII.GetBytes("--" + "---------------------------" + boundary + "\r\n");
var fileStream = new FileStream(Application.StartupPath+@"\file.dat", FileMode.Open, FileAccess.Read);
// 最后的结束符
var endBoundary = Encoding.ASCII.GetBytes("--" + "---------------------------" + boundary + "--\r\n");
//设置属性
request.Headers.Clear();
request.Method = "POST";//必须为大写,不然会出错
//request.Headers.Add("headName", HttpUtility.UrlEncode("value"));
request.ContentType = "multipart/form-data; boundary=---------------------------" + boundary;//
request.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/xaml+xml, application/x-ms-xbap, application/x-ms-application, */*";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET4.0C; .NET4.0E)";
XF_Main.WriteErrorLog(referer);
//new NameValueCollection()
//request.ContentLength = data.Length;
request.Referer = referer;
request.AllowAutoRedirect = true;
request.KeepAlive = true;
request.CookieContainer = cCurrent;
request.Timeout = 6000; //超时时间
XF_Main.WriteErrorLog("3");
//写入上传文件
string filePartHeader = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n" + "Content-Type: text/plain\r\n\r\n";
var header = string.Format(filePartHeader, "wkstAttach.contentFile", Application.StartupPath + @"\file.dat");
var headerbytes = Encoding.UTF8.GetBytes(header);
memStream.Write(beginBoundary, 0, beginBoundary.Length);
memStream.Write(headerbytes, 0, headerbytes.Length);
var buffer = new byte[1024];
int bytesRead; // =0
XF_Main.WriteErrorLog("4");
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
{
memStream.Write(buffer, 0, bytesRead);
}
memStream.Write(Encoding.UTF8.GetBytes(postdata), 0, Encoding.UTF8.GetBytes(postdata).Length);
// 写入最后的结束边界符
memStream.Write(endBoundary, 0, endBoundary.Length);
request.ContentLength = memStream.Length;
XF_Main.WriteErrorLog("5");
//UTF8Encoding encoding = new UTF8Encoding();
//ASCIIEncoding encoding = new ASCIIEncoding();
//byte[] data = encoding.GetBytes(postdata);//post 方式的编码
//byte[] data = Encoding.UTF8.GetBytes(postdata);//post 方式的编码
//XF_Main.WriteErrorLog("21");
//request.Headers.Clear();
//request.ServicePoint.ConnectionLimit
//request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET4.0C; .NET4.0E)";
//request.Headers.Add("Accept-Language", "zh-cn");
//request.Headers.Add("Accept-Encoding", "gzip, deflate");
//request.Accept = "application/x-shockwave-flash, image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*";
//request.Host = "10.158.249.36";
//request.PreAuthenticate = true;
//request.Credentials = CredentialCache.DefaultCredentials;
//XF_Main.WriteErrorLog("3");
//提交请求
stream = request.GetRequestStream();
memStream.Position = 0;
var tempBuffer = new byte[memStream.Length];
memStream.Read(tempBuffer, 0, tempBuffer.Length);
memStream.Close();
stream.Write(tempBuffer, 0, tempBuffer.Length);
stream.Close();
//接收
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); //XF_Main.WriteErrorLog("4");
if (response.StatusCode != HttpStatusCode.OK)
return false;
//StreamReader streamReader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8"));
//StreamReader streamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
StreamReader streamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
result = streamReader.ReadToEnd();
request.Abort();
response.Close();
streamReader.Close();
cCurrent = null;
return st;
}
catch (Exception ex) { XF_Main.WriteErrorLog(ex.Message + "\r\n" + ex.StackTrace); st = false; return false; } return st;
}
public static string GetMultipartData(string postdata, string boundary)
{
array = postdata.Split('&');
datas = new StringBuilder();
foreach (string str in array)
{
string[] arr = str.Split('=');
//if (str.Contains("wkstAttach"))
// datas.AppendFormat("-----------------------------{0}\r\nContent-Disposition: form-data; name=\"{1}\"; filename=\"\"\r\nContent-Type: application/octet-stream\r\n\r\n{2}\r\n", boundary, arr[0], arr[1]);
//else
datas.AppendFormat("-----------------------------{0}\r\nContent-Disposition: form-data; name=\"{1}\"\r\n\r\n{2}\r\n", boundary, arr[0], arr[1]);
}
datas.AppendFormat("-----------------------------{0}--\r\n", boundary);
return datas.ToString();
}