C#通过GET/POST方式发送Http请求

下面我将为你详细讲解“C#通过GET/POST方式发送HTTP请求”的完整攻略。

1. 使用HttpWebRequest类发送GET请求

发送GET请求需要使用HttpWebRequest类。下面是发送GET请求的示例代码:

string url = "https://example.com/api/";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();

上面的代码将向url发送一个GET请求,并返回一个包含服务器返回信息的HttpWebResponse对象。然后我们可以从这个对象中读取返回的内容。

2. 使用HttpWebRequest类发送POST请求

发送POST请求同样需要使用HttpWebRequest类,不过发送POST请求需要在请求中添加请求的参数。下面是发送POST请求的示例代码:

string url = "https://example.com/api/";
string postData = "param1=value1&param2=value2"; //请求的参数
byte[] postDataBytes = Encoding.UTF8.GetBytes(postData);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = postDataBytes.Length;
using (Stream requestStream = request.GetRequestStream())
{
    requestStream.Write(postDataBytes, 0, postDataBytes.Length);
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();

上面的代码将向url发送一个POST请求,并添加postData作为请求参数。然后我们将请求参数转换为字节数组,设置请求的ContentType和ContentLength,使用GetRequestStream()方法获取请求流并写入请求参数,接着发送请求并读取服务器返回的内容。

3. 示例1:使用C#发送GET请求

假设我们要向https://jsonplaceholder.typicode.com/posts/1发送一个GET请求,返回以下内容:

{
  "userId": 1,
  "id": 1,
  "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
  "body": "quia et suscipit\nsuscipit recusandae..."
}

下面是发送GET请求的完整代码:

public async Task<string> Get(string url)
{
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    request.Method = "GET";
    using (HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync())
    {
        using (Stream stream = response.GetResponseStream())
        {
            using (StreamReader reader = new StreamReader(stream))
            {
                return await reader.ReadToEndAsync();
            }
        }
    }
}

string url = "https://jsonplaceholder.typicode.com/posts/1";
string responseString = await Get(url);
Console.WriteLine(responseString);

上面的代码中,我们定义了一个名为Get的异步方法来发送GET请求并返回服务器的响应。然后我们调用这个方法来发送请求,最后将响应内容输出到控制台。

4. 示例2:使用C#发送POST请求

假设我们要向https://reqbin.com/echo/post/json发送一个POST请求,并添加以下JSON格式的数据作为请求参数:

{
  "name": "John",
  "age": 30,
  "city": "New York"
}

下面是发送POST请求的完整代码:

public async Task<string> Post(string url, string data)
{
    byte[] postDataBytes = Encoding.UTF8.GetBytes(data);
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    request.Method = "POST";
    request.ContentType = "application/json";
    request.ContentLength = postDataBytes.Length;
    using (Stream requestStream = request.GetRequestStream())
    {
        await requestStream.WriteAsync(postDataBytes, 0, postDataBytes.Length);
    }
    using (HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync())
    {
        using (Stream stream = response.GetResponseStream())
        {
            using (StreamReader reader = new StreamReader(stream))
            {
                return await reader.ReadToEndAsync();
            }
        }
    }
}

string url = "https://reqbin.com/echo/post/json";
string data = @"{
                  ""name"": ""John"",
                  ""age"": 30,
                  ""city"": ""New York""
               }";
string responseString = await Post(url, data);
Console.WriteLine(responseString);

上面的代码中,我们定义了一个名为Post的异步方法来发送POST请求并返回服务器的响应。然后我们调用这个方法来发送请求,最后将响应内容输出到控制台。

以上就是使用C#发送HTTP请求的完整攻略,包括了使用HttpWebRequest类发送GET/POST请求的示例代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#通过GET/POST方式发送Http请求 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • AspNetCore 成长杂记(一):JWT授权鉴权之生成JWT(其一)

    引子 最近不知怎么的,自从学了WebAPI(为什么是这个,而不是MVC,还不是因为MVC的Razor语法比较难学,生态不如现有的Vue等框架,webapi很好的结合了前端生态)以后,使用别人的组件一帆风顺,但是不知其意,突然很想自己实现一个基于的JWT认证服务,来好好了解一下这个内容。 起步 自从Session-Cookie方案逐渐用的越来越少,JWT的使用…

    C# 2023年4月24日
    00
  • C#实现简单的计算器功能完整实例

    关于 C# 实现简单计算器功能,完整实例的攻略,我们可以按照以下步骤进行实现: 1. 创建一个新的 C# 控制台应用程序 首先,我们需要在 Visual Studio 中创建一个新的 C# 控制台应用程序。在创建时,我们要注意程序集名称和解决方案名称应该清楚明了。这里我们将应用程序取名为 Calculator。 2. 创建计算器类 创建一个名为 Calcul…

    C# 2023年6月1日
    00
  • 聚星C#数字信号处理工具包频谱分析的用法

    那么我来详细讲解“聚星C#数字信号处理工具包频谱分析的用法”的完整攻略。 什么是聚星C#数字信号处理工具包? 聚星C#数字信号处理工具包(JStar DSP Toolkit for C#)是一款专业的数字信号处理软件库,它是用 C# 语言编写的,可以在 Windows 平台上运行。该工具包提供了许多数字信号处理领域的功能模块,包括滤波、变换、降噪、频谱分析等…

    C# 2023年6月6日
    00
  • 理解C#中的Lambda表达式

    理解C#中的Lambda表达式需要掌握以下几个方面: Lambda表达式的语法 Lambda表达式的使用场景和应用 Lambda表达式与委托的关系 Lambda表达式的方法推断和参数类型推断 接下来我会逐一讲解。 Lambda表达式的语法 Lambda表达式是一种匿名方法,它通常用于作为委托类型的参数或返回值,可以简化很多代码。Lambda表达式的语法如下:…

    C# 2023年6月6日
    00
  • asp实现读取数据库输出json代码

    下面是ASP实现读取数据库输出JSON格式的完整攻略。 第一步:连接数据库 首先,我们需要连接数据库。在ASP中,我们可以使用ADODB库来连接数据库。以下是连接字符串的示例代码: Set conn = Server.CreateObject("ADODB.Connection") conn.Open "Provider=Mic…

    C# 2023年5月31日
    00
  • C# ContainsValue(Object):确定集合是否包含具有指定值的元素

    C# ContainsValue(Object)方法详解 1. 方法介绍 ContainsValue()方法是C#中Dictionary集合类的一个方法,用于判断字典中是否包含指定的值。 语法结构如下所示: public bool ContainsValue(TValue value); 2. 参数说明 value:要在字典中查找的值。 3. 返回值 如果字…

    C# 2023年4月19日
    00
  • C#难点逐个击破(8):可空类型System.Nullable

    C# 中的可空类型(Nullable Types)是一种特殊的数据类型,用于表示既可以拥有正常值,也可能为 null 的数据。可空类型的使用十分重要,它可以避免出现空值错误,提高代码的稳定性。 要使用可空类型,需要使用 System.Nullable 结构体来封装具体的数据类型 T。例如,如果要创建一个可空的 int 类型,可以这样定义变量: int? nu…

    C# 2023年5月15日
    00
  • C#实现学生成绩管理系统

    C#实现学生成绩管理系统 介绍 学生成绩管理系统是一种常见的应用,它提供了学生信息录入、成绩查阅等功能,方便教师和学生进行学习管理。C#是一种面向对象的编程语言,非常适合实现这种应用。 本文将介绍如何使用C#实现一个简单的学生成绩管理系统。我们将使用Visual Studio开发环境来快速构建应用。本系统将支持学生信息的录入、成绩的添加、修改和删除,以及成绩…

    C# 2023年6月7日
    00
合作推广
合作推广
分享本页
返回顶部