用到的命名空间 using System.Net;
方法一:
//url:POST请求地址
//postData:json格式的请求报文,例如:{"key1":"value1","key2":"value2"}
public static string PostUrl(string url, string postData)
{
string result = "";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.Timeout = 800000;//设置请求超时时间,单位为毫秒
req.ContentType = "application/json";
byte[] data = Encoding.UTF8.GetBytes(postData);
req.ContentLength = data.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(data, 0, data.Length);
reqStream.Close();
}
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream stream = resp.GetResponseStream();
//获取响应内容
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
result = reader.ReadToEnd();
}
return result;
}
方法二:
/* url:POST请求地址
* postData:json格式的请求报文,例如:{"key1":"value1","key2":"value2"} */
public static string PostJson(string url, string postData)
{
string result = "";
System.Net.Http.HttpContent httpContent = new System.Net.Http.StringContent(postData);
httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
httpContent.Headers.ContentType.CharSet = "utf-8";
//string postUrl = "http://test.***.gov.cn:81/***/**/request";
string postUrl = url;
if (postUrl.StartsWith("https"))
{
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls;
}
System.Net.Http.HttpClient httpClient = new System.Net.Http.HttpClient();
try
{
System.Net.Http.HttpResponseMessage response = httpClient.PostAsync(postUrl, httpContent).Result;
//result = response.IsSuccessStatusCode?string.Empty:response.StatusCode.ToString();
result = response.Content.ReadAsStringAsync().Result;
}
catch(Exception ex)
{
result = ex.Message;
}
return result;
}