/// <summary>
/// POST方式提交 application/json
/// </summary>
/// <param name="postUrl">请求地址</param>
/// <param name="paramData">入参</param>
/// <param name="dataEncode">编码方式</param>
/// <returns></returns>
public string PostWebRequest(string postUrl, string paramData, Encoding dataEncode)
{
string ret = string.Empty;
try
{
byte[] byteArray = dataEncode.GetBytes(paramData); //转化
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; //一定要有这一句
ServicePointManager.ServerCertificateValidationCallback = delegate(
Object obj, X509Certificate certificate, X509Chain chain,
SslPolicyErrors errors)
{
return (true);
};
HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl));
webReq.Method = "POST";
webReq.ContentType = "application/json";
webReq.ContentLength = byteArray.Length;
Stream newStream = webReq.GetRequestStream();
newStream.Write(byteArray, 0, byteArray.Length);//写入参数
newStream.Close();
HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
ret = sr.ReadToEnd();
sr.Close();
response.Close();
newStream.Close();
}
catch (Exception ex)
{
MessageBoxs.ShowError(ex.Message);
}
return ret;
}
/// <summary>
/// POST方式提交 application/json
/// </summary>
/// <param name="postUrl">请求地址</param>
/// <param name="paramData">入参</param>
/// <param name="dataEncode">编码方式</param>
/// <returns></returns>
public string PostWebRequest(string postUrl, string paramData)
{
string ret = string.Empty;
try
{
byte[] byteArray = Encoding.UTF8.GetBytes(paramData); //转化
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; //一定要有这一句
ServicePointManager.ServerCertificateValidationCallback = delegate(
Object obj, X509Certificate certificate, X509Chain chain,
SslPolicyErrors errors)
{
return (true);
};
HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl));
webReq.Method = "POST";
webReq.ContentType = "application/json";
webReq.ContentLength = byteArray.Length;
Stream newStream = webReq.GetRequestStream();
newStream.Write(byteArray, 0, byteArray.Length);//写入参数
newStream.Close();
HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
ret = sr.ReadToEnd();
sr.Close();
response.Close();
newStream.Close();
}
catch (Exception ex)
{
MessageBoxs.ShowError(ex.Message);
}
return ret;
}
/// <summary>
/// POST方式提交 multipart/form-data
/// </summary>
/// <param name="postUrl">请求的拼接地址及入参(示例:http://ip:端口?a=1&b=2)</param>
/// <returns></returns>
public string PostRequest(string strInterFaceName, string postUrl)
{
string ret = string.Empty;
try
{
byte[] byteArray = Encoding.UTF8.GetBytes(postUrl); //转化
HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl));
webReq.Method = "POST";
webReq.ContentType = "multipart/form-data";
webReq.ContentLength = byteArray.Length;
Stream newStream = webReq.GetRequestStream();
newStream.Write(byteArray, 0, byteArray.Length);//写入参数
newStream.Close();
HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
ret = sr.ReadToEnd();
sr.Close();
response.Close();
newStream.Close();
}
catch (Exception ex)
{
MessageBoxs.ShowError(ex.Message);
}
return ret;
}
/// <summary>
/// Get提交方式
/// </summary>
/// <param name="getUrl">请求地址</param>
/// <returns></returns>
public string GetWebRequest(string getUrl)
{
string responseStr = string.Empty;
try
{
WebRequest myWebRequest = WebRequest.Create(getUrl);
WebResponse myWebResponse = myWebRequest.GetResponse();
Stream ReceiveStream = myWebResponse.GetResponseStream();
if (ReceiveStream != null)
{
StreamReader reader = new StreamReader(ReceiveStream, Encoding.UTF8);
responseStr = reader.ReadToEnd();
reader.Close();
}
myWebResponse.Close();
}
catch (Exception ex)
{
}
return responseStr;
}
/// <summary>
/// 指定Post地址使用Get 方式获取全部字符串
/// </summary>
/// <param name="url">请求后台地址</param>
/// <returns></returns>
public string Post(string url)
{
string result = "";
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; //一定要有这一句
ServicePointManager.ServerCertificateValidationCallback = delegate(
Object obj, X509Certificate certificate, X509Chain chain,
SslPolicyErrors errors)
{
return (true);
};
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream stream = resp.GetResponseStream();
//获取内容
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
result = reader.ReadToEnd();
}
return result;
}
/// <summary>
/// 发送JSON请求
/// </summary>
/// <param name="url">请求地址</param>
/// <param name="json">请求JSON</param>
/// <param name="timeout">超时时间(秒)</param>
/// <returns>响应对象</returns>
public T PostJson<T>(string url, object json, int timeout = 10)
{
try
{
var jsonString = JsonConvert.SerializeObject(json);
var jsonBytes = Encoding.UTF8.GetBytes(jsonString);
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; //一定要有这一句
ServicePointManager.ServerCertificateValidationCallback = delegate(
Object obj, X509Certificate certificate, X509Chain chain,
SslPolicyErrors errors)
{
return (true);
};
HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
request.Method = "POST";
request.ContentType = "application/json;charset=UTF-8";
request.ContentLength = jsonBytes.Length;
request.Timeout = timeout * 1000;
ServicePointManager.ServerCertificateValidationCallback = (object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) => { return true; };
using (var writer = request.GetRequestStream())
{
writer.Write(jsonBytes, 0, jsonBytes.Length);
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
return JsonConvert.DeserializeObject<T>(reader.ReadToEnd());
}
}
}
catch (Exception ex)
{
throw new Exception(string.Format("请求失败:{0}", ex.Message));
}
}
/// <summary>
/// 指定Post地址使用Get 方式获取全部字符串
/// </summary>
/// <param name="url">请求后台地址</param>
/// <returns></returns>
public T DicPost<T>(string url, Dictionary<string, string> dic)
{
//string result = "";
try
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; //一定要有这一句
ServicePointManager.ServerCertificateValidationCallback = delegate(
Object obj, X509Certificate certificate, X509Chain chain,
SslPolicyErrors errors)
{
return (true);
};
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
#region 添加Post 参数
StringBuilder builder = new StringBuilder();
int i = 0;
foreach (var item in dic)
{
if (i > 0)
builder.Append("&");
builder.AppendFormat("{0}={1}", item.Key, item.Value);
i++;
}
JHLog.Instance().Writelog("builder:" + builder.ToString());
byte[] data = Encoding.UTF8.GetBytes(builder.ToString());
req.ContentLength = data.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(data, 0, data.Length);
reqStream.Close();
}
#endregion
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream stream = resp.GetResponseStream();
//获取响应内容
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
string result = reader.ReadToEnd();
JHLog.Instance().Writelog("响应内容:"+result);
return JsonConvert.DeserializeObject<T>(reader.ReadToEnd());
}
}
catch (Exception ex)
{
throw new Exception(string.Format("请求失败:{0}", ex.Message));
}
}
/// <summary>
/// 指定Post地址使用Get 方式获取全部字符串 application/x-www-form-urlencoded
///using System.Net.Security;
///using System.Security.Cryptography.X509Certificates;
/// </summary>
/// <param name="url">请求后台地址</param>
/// <returns></returns>
public string DicPosts(string url, Dictionary<string, string> dic)
{
string result = "";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; //一定要有这一句
ServicePointManager.ServerCertificateValidationCallback = delegate(
Object obj, X509Certificate certificate, X509Chain chain,
SslPolicyErrors errors)
{
return (true);
};
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
#region 添加Post 参数
StringBuilder builder = new StringBuilder();
int i = 0;
foreach (var item in dic)
{
if (i > 0)
builder.Append("&");
builder.AppendFormat("{0}={1}", item.Key, item.Value);
i++;
}
byte[] data = Encoding.UTF8.GetBytes(builder.ToString());
req.ContentLength = data.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(data, 0, data.Length);
reqStream.Close();
}
#endregion
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream stream = resp.GetResponseStream();
//获取响应内容
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
result = reader.ReadToEnd();
}
return result;
}
/// <summary>
/// POST请求与获取结果
/// 地址:http://ip:port?appid=11&dd=22&appkey=33
/// </summary>
public string HttpPostJson(string Url, string postDataStr)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Method = "POST";
request.ContentType = "application/json";
// request.ContentLength = postDataStr.Length;
StreamWriter writer = new StreamWriter(request.GetRequestStream(), Encoding.GetEncoding("utf-8"));
writer.Write(postDataStr);
writer.Flush();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string encoding = response.ContentEncoding;
if (encoding == null || encoding.Length < 1)
{
encoding = "UTF-8"; //默认编码
}
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(encoding));
string retString = reader.ReadToEnd();
return retString;
}
C# POST GET请求方式汇总
最新推荐文章于 2024-08-08 20:28:25 发布
本文介绍了如何通过POST方式提交JSON数据,包括两种不同的编码方式:application/json和multipart/form-data,并展示了异常处理和安全设置。同时涵盖了GET请求和不同参数提交的示例。
摘要由CSDN通过智能技术生成