C# Post 模拟表单提交
/// <summary> /// 向指定的URL地址发起一个POST请求。 /// </summary> /// <param name="url">要请求的URL地址</param> /// <param name="keyvalues">要上传的数据项</param> /// <returns>服务器的返回结果</returns> public static string FormdataPost(string url, Dictionary<string, string> keyvalues, string Authorization) { System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12; if (string.IsNullOrEmpty(url)) throw new ArgumentNullException("url"); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.KeepAlive = true; request.Headers.Add("Authorization", Authorization);//token string boundary = "---------------------------" + Guid.NewGuid().ToString("N"); byte[] boundaryBytes = Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n"); request.ContentType = "multipart/form-data; boundary=" + boundary; Stream stream = request.GetRequestStream(); byte[] beginBoundaryBytes = Encoding.UTF8.GetBytes("--" + boundary + "\r\n"); byte[] endBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n"); //写入参数 if (keyvalues != null) { string formDataTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n" + "{1}\r\n"; foreach (string key in keyvalues.Keys) { string formItem = string.Format(formDataTemplate, key, keyvalues[key]); byte[] formItemBytes = Encoding.UTF8.GetBytes(formItem); stream.Write(beginBoundaryBytes, 0, beginBoundaryBytes.Length); // 1.1 写入FormData项的开始边界符 stream.Write(formItemBytes, 0, formItemBytes.Length); // 1.2 将键值对写入FormData项中 } } boundaryBytes = Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n"); stream.Write(boundaryBytes, 0, boundaryBytes.Length); stream.Close(); using (WebResponse response = request.GetResponse()) { using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) { return reader.ReadToEnd(); } } }
可以用
原帖地址:https://blog.csdn.net/u012925792/article/details/131909693