C#发送Post方式的Http请求

本文介绍了一个使用 C# 发起 POST 请求的具体示例。该示例展示了如何创建 HttpWebRequest 对象并设置请求方法为 POST,同时设置了 Content-Type 和 Content-Length,并通过 GetRequestStream() 方法发送请求参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

具体代码:

string strURL = "http://xxxxxxxxxx";
            try
            {
                System.Net.HttpWebRequest request;
                request = (System.Net.HttpWebRequest)WebRequest.Create(strURL);
                //Post请求方式
                request.Method = "POST";
                // 内容类型
                request.ContentType = "application/x-www-form-urlencoded";
                // 参数经过URL编码,此处共三个编码
                string paraUrlCoded = System.Web.HttpUtility.UrlEncode("action");
                paraUrlCoded += "=" + System.Web.HttpUtility.UrlEncode("vote");
                paraUrlCoded += "&" + System.Web.HttpUtility.UrlEncode("cid");
                paraUrlCoded += "=" + System.Web.HttpUtility.UrlEncode("18");
                paraUrlCoded += "&" + System.Web.HttpUtility.UrlEncode("voteId[]");
                paraUrlCoded += "=" + System.Web.HttpUtility.UrlEncode("258");
                paraUrlCoded += "&" + System.Web.HttpUtility.UrlEncode("Submit");
                paraUrlCoded += "=" + System.Web.HttpUtility.UrlEncode("");

                byte[] payload;
                //将URL编码后的字符串转化为字节
                payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
                //设置请求的 ContentLength 
                request.ContentLength = payload.Length;
                //获得请求流
                Stream writer = request.GetRequestStream();
                //将请求参数写入流
                writer.Write(payload, 0, payload.Length);
                writer.Dispose();
                // 关闭请求流
                writer.Close();
                System.Net.HttpWebResponse response;

                response = (System.Net.HttpWebResponse)request.GetResponse();
                System.IO.Stream s;
//进行接收,(省略会造成程序无响应)。
                s = response.GetResponseStream();
                XmlTextReader Reader = new XmlTextReader(s);
                Reader.MoveToContent();
                Reader.Close(); 
            }


### 如何在 C#发送 HTTP POST 请求C# 中,可以通过 `HttpClient` 类来实现向服务器发送 HTTP POST 请求的功能。下面是一个完整的例子,展示如何构建并发送带有表单数据的 POST 请求。 #### 使用 HttpClient 发送 POST 请求 以下代码展示了如何通过 `HttpClient` 向指定 URL 发送 POST 请求,并附带一些键值对作为表单数据: ```csharp using System; using System.Collections.Generic; using System.Net.Http; using System.Threading.Tasks; public class Program { public static async Task Main(string[] args) { using (var client = new HttpClient()) { var postData = new List<KeyValuePair<string, string>>() { new KeyValuePair<string, string>("key1", "value1"), new KeyValuePair<string, string>("key2", "value2") }; var content = new FormUrlEncodedContent(postData); try { HttpResponseMessage response = await client.PostAsync("https://example.com/api", content); response.EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine($"Response Body: {responseBody}"); } catch (HttpRequestException e) { Console.WriteLine($"Request error: {e.Message}"); } } } } ``` 上述代码中,创建了一个名为 `postData` 的列表对象用于存储要提交给服务器的数据[^1]。这些数据随后被封装到 `FormUrlEncodedContent` 对象中以便于传输。最后调用了 `PostAsync()` 方法执行实际的网络请求操作。 #### 关于异步方法 注意这里使用了 `async` 和 `await` 来处理异步任务。这是因为在现代应用程序开发中推荐采用这种方式来进行耗时较长的操作(比如网络通信),从而不会阻塞主线程运行其他重要逻辑。 #### 错误处理机制 为了提高程序健壮性,在捕获异常部分加入了针对可能发生的 `HttpRequestException` 进行适当反馈的设计思路。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值