private static T PostDataViaHttpWebRequest<T>(string baseUrl, Dictionary<string, string> headers, Dictionary<string, string> urlParas, string requestBody = null)
{
var resuleJson = string.Empty;
string apiUrl = baseUrl;
try
{
if (urlParas != null)
{
foreach (var item in urlParas)
{
if (apiUrl.IndexOf("{" + item.Key + "}") > -1)
{
apiUrl = apiUrl.Replace("{" + item.Key + "}", item.Value);
}
else
{
apiUrl += string.Format("{0}{1}={2}", apiUrl.Contains("?") ? "&" : "?", item.Key, item.Value);
}
}
}
var req = (HttpWebRequest)WebRequest.Create(apiUrl);
req.Method = "POST";
req.ContentType = "application/json";
if (!string.IsNullOrEmpty(requestBody))
{
using (var postStream = new StreamWriter(req.GetRequestStream()))
{
postStream.Write(requestBody);
}
}
if (headers != null)
{
if (headers.Keys.Any(p => p.ToLower() == "content-type"))
req.ContentType = headers.SingleOrDefault(p => p.Key.ToLower() == "content-type").Value;
if (headers.Keys.Any(p => p.ToLower() == "accept"))
req.Accept = headers.SingleOrDefault(p => p.Key.ToLower() == "accept").Value;
}
//req.ContentLength = 0;//20210802仅测试
var response = (HttpWebResponse)req.GetResponse();
using (Stream stream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(stream, Encoding.GetEncoding("UTF-8")))
{
resuleJson = reader.ReadToEnd();
}
}
}
catch (Exception ex)
{
return default(T);
}
return JsonConvert.DeserializeObject<T>(resuleJson);
}
不记得在哪看到的了 记录一下。