C# post请求

   #region 发送post请求
        public static string Post(string str)
        {

            string result = "";
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://localhost:8563/nfo/dd");
            req.Method = "POST";
            req.ContentType = "application/x-www-form-urlencoded";

            byte[] data = Encoding.UTF8.GetBytes(str);//把字符串转换为字节

            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;
        }
        #endregion

 

        /// <summary>
        /// GET请求与获取结果
        /// </summary>
        public static string HttpGet(string Url, string postDataStr)
        {
           // HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr == "" ? "" : "?") + postDataStr);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
            request.Method = "GET"; //设置请求方式
            request.ContentType = "text/html;charset=UTF-8"; //设置内容类型

            HttpWebResponse response = (HttpWebResponse)request.GetResponse(); //返回响应

            Stream myResponseStream = response.GetResponseStream(); //获得响应流

            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);//以UTF8编码方式读取该流
            string retString = myStreamReader.ReadToEnd();//读取所有

            myStreamReader.Close();//关闭流
            myResponseStream.Close();
            return retString;
        }

 

转载于:https://www.cnblogs.com/enych/p/10660132.html

### 如何在 C# 中实现 POST 请求C# 中,可以通过多种方式发送 HTTP POST 请求。以下是基于 `HttpClient` 的一种常见方法,这种方法被广泛推荐用于现代开发环境[^1]。 #### 使用 HttpClient 发送 POST 请求 下面是一个完整的示例代码,展示如何通过 `HttpClient` 向服务器发送带有表单数据的 POST 请求: ```csharp using System; using System.Collections.Generic; using System.Net.Http; using System.Threading.Tasks; class Program { private static readonly HttpClient client = new HttpClient(); static async Task Main(string[] args) { try { // 准备要发送的数据 var values = new Dictionary<string, string> { { "username", "testuser" }, { "password", "testpass" } }; // 将字典转换为 URL 编码的内容 var content = new FormUrlEncodedContent(values); // 发送 POST 请求并获取响应 HttpResponseMessage response = await client.PostAsync("https://example.com/api/login", content); // 确保请求成功 response.EnsureSuccessStatusCode(); // 读取返回的结果字符串 string responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine($"Response Body: {responseBody}"); } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); } } } ``` 此代码片段展示了如何创建一个包含键值对的字典对象,并将其作为表单数据传递给目标 URL。它还演示了如何处理异步操作以及捕获可能发生的异常[^1]。 #### 使用 HttpClient 发送 JSON 数据的 POST 请求 如果需要向 API 提供 JSON 格式的 payload,则可以按照以下方式进行调整: ```csharp using System; using System.Net.Http; using System.Text.Json; using System.Threading.Tasks; public class PostData { public string Username { get; set; } public string Password { get; set; } } class Program { private static readonly HttpClient client = new HttpClient(); static async Task Main(string[] args) { try { // 创建要序列化的对象 var postData = new PostData { Username = "testuser", Password = "testpass" }; // 序列化成 JSON 字符串 string jsonPayload = JsonSerializer.Serialize(postData); // 转换成 HttpContent 对象 var httpContent = new StringContent(jsonPayload, System.Text.Encoding.UTF8, "application/json"); // 执行 POST 请求 HttpResponseMessage response = await client.PostAsync("https://example.com/api/login", httpContent); // 处理响应 response.EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine($"Response Body: {responseBody}"); } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); } } } ``` 这段代码说明了如何构建自定义类来表示复杂结构的数据,并利用 .NET 自带的 `System.Text.Json` 进行序列化和反序列化工作[^1]。 --- #### 注意事项 尽管 GET 和 POST 方法都可以完成相似的任务,但在实际应用中它们有各自的最佳实践用途。通常情况下,GET 更适合于检索资源而不改变其状态;而 POST 则适用于提交新数据或者修改现有记录的操作[^2]。 此外,在设计应用程序时应考虑安全性因素,比如敏感信息不应暴露在查询参数里(即避免使用 GET),而是应该放在请求体内部并通过 HTTPS 加密传输[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值