一、 HttpWebRequest 方式
支持.net 4.5 以下。一些老项目无法升级高版本的项目还用的到。例如支持XP系统的winfrom程序
可以携带cookie,使用HttpWebRequest的SupportsCookieContainer属性
public string HttpRequest() { HttpWebResponse response = null; StreamReader resultReader = null; Dictionary<string, object> parameter = new Dictionary<string, object>() { { "p1","v1"}, { "p2","v2"} }; var parameterString = JsonConvert.SerializeObject(parameter); try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create("htt://url"); request.Method = "POST"; request.ContentType = "application/json; charset=UTF-8"; request.Headers = new WebHeaderCollection { { "Header1", "v1" }, { "Header2", "v2" } }; //设置参数 byte[] data = Encoding.UTF8.GetBytes(parameterString); request.ContentLength = data.Length; using (Stream newStream = request.GetRequestStream()) { newStream.Write(data, 0, data.Length); }; //获取正确或错误结果 try { response = (HttpWebResponse)request.GetResponse(); } catch (WebException ex) { response = (HttpWebResponse)ex.Response; } Stream webStream = response.GetResponseStream(); if (webStream == null) { throw new Exception("Network error"); } int statsCode = (int)response.StatusCode; resultReader = new StreamReader(webStream, Encoding.UTF8); string responseContent = resultReader.ReadToEnd(); //如果http请求响应非200,则异常 if (statsCode != 200) { throw new Exception(statsCode.ToString()); } return responseContent; } catch (Exception e) { throw e; } finally { if (response != null) response.Close(); if (resultReader != null) resultReader.Close(); } }