httpGet和httpPost
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
namespace HealthyCardPostApp.Helper
{
public class HttpHelper
{
private static bool IsFirst = true;
/// <summary>
/// post
/// </summary>
/// <param name="postUrl">请求地址</param>
/// <param name="paras">参数</param>
/// <returns>string返回</returns>
public static string PostMethod(string postUrl, string paras)
{
string result = "";
string resultStr = string.Empty;
if (string.IsNullOrWhiteSpace(postUrl))
{
resultStr = "发送地址为空";
}
else
{
string targetUrl = postUrl.Trim().ToString();
try
{
if (targetUrl.ToLower().StartsWith("https"))
{
SetCertificatePolicy();
}
UTF8Encoding encoding = new UTF8Encoding();
byte[] postData = encoding.GetBytes(paras);
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(targetUrl);
myRequest.Method = "POST";
myRequest.ContentType = "application/json;charset=UTF-8";
myRequest.ContentLength = postData.Length;
Stream newStream = myRequest.GetRequestStream();
newStream.Write(postData, 0, postData.Length);
newStream.Flush();
newStream.Close();
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
result = reader.ReadToEnd();
}
catch (Exception ex)
{
result = ex.Message;
}
}
return result;
}
/// <summary>
/// get请求方式
/// </summary>
/// <param name="getUrl">请求地址</param>
/// <returns>string返回</returns>
public static string GetMethod(string getUrl)
{
string result = "";
if (string.IsNullOrWhiteSpace(getUrl))
{
result = "发送地址不能为空";
}
else
{
string targetUrl = getUrl.Trim().ToString();
try
{
if (targetUrl.ToLower().StartsWith("https"))
{
SetCertificatePolicy();
}
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(targetUrl);
myRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
myRequest.Method = "GET";
myRequest.Timeout = 30 * 60 * 1000;
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
Stream newStream = myResponse.GetResponseStream();
StreamReader reader = new StreamReader(newStream, Encoding.UTF8);
result = reader.ReadToEnd();
}
catch (Exception ex)
{
result = ex.Message;
}
}
return result;
}
/// <summary>
/// https链接信任
/// </summary>
private static void SetCertificatePolicy()
{
if(!IsFirst){
return;
}
IsFirst = false;
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, error) =>{
//信任所有证书
return true;
};
}
}
}
c# 提交FormData表单数据
注意:UserAgent 必须设置
public static string PostFormMethod<T>(string url, T value)
{
var modelType = typeof(T);
string boundary = "--------------------------" + DateTime.Now.Ticks.ToString("x");
string boundary2 = "--" + boundary;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.UserAgent = "My Platform";//重要,重要,重要!!!必须要设置的,不设置会报错
request.Method = "POST";
request.ContentType = $"multipart/form-data; boundary=---{boundary}";
StringBuilder postDataStr = new StringBuilder();
foreach (var item in modelType.GetProperties())
{
postDataStr.Append(boundary2 + "\r\n");
postDataStr.Append("Content-Disposition: form-data; name=\"" + item.Name + "\"" + "\r\n\r\n");
postDataStr.Append((item.GetValue(value)?.ToString() ?? "") + "\r\n");
}
postDataStr.Append(boundary2 + "--" + "\r\n");
Stream myRequestStream = request.GetRequestStream();
StreamWriter myStreamWriter = new StreamWriter(myRequestStream, System.Text.Encoding.UTF8);
myStreamWriter.Write(postDataStr.ToString());
myStreamWriter.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, System.Text.Encoding.UTF8);
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return retString;
}
该代码示例展示了如何在C#中使用HttpWebRequest类实现HTTPPOST和GET请求。POST方法用于提交表单数据,而GET方法用于获取资源。在POST请求中,数据被编码并添加到请求体中,而在GET请求中,数据作为URL的一部分传递。对于POST请求,注意设置了ContentType为application/json;charset=UTF-8,而在处理FormData时,需设置特定的ContentType和添加边界。

519

被折叠的 条评论
为什么被折叠?



