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日

相关文章

  • 使用C#获取系统特殊文件夹路径的解决方法

    当我们搭建一个桌面应用程序时,需要获取一些系统特殊文件夹的路径,比如应用程序数据文件夹、用户文档文件夹等。使用C#可以方便地获取这些文件夹路径,下面是一些详细的攻略介绍。 1. 使用Environment.SpecialFolder枚举获取系统特殊文件夹路径 Environment.SpecialFolder枚举包含了系统特殊文件夹的名称,可以通过该枚举获取…

    C# 2023年6月7日
    00
  • C# Clone():创建并返回当前集合的副本

    当我们想要在C#中复制一个对象的数据而不是仅仅是引用时,可以使用Clone()方法。Clone()方法是从基类Object继承下来的,它返回当前实例的一份副本。 下面是使用Clone()时需要注意的几点要求: 被克隆的对象需要实现ICloneable接口,因为Clone()方法实际上是对ICloneable接口的实现。 Clone()方法返回的是Object…

    C# 2023年4月19日
    00
  • c#使用wmi查询usb设备信息示例

    下面我将为您详细讲解如何使用c#和wmi查询usb设备信息: 1. 什么是WMI? WMI即Windows Management Instrumentation(Windows管理规范),是微软在Windows NT 4.0中推出的一个系统管理标准。它提供了一种机制,用于通过应用程序编程接口(API)收集有关计算机系统硬件、软件甚至网络服务的信息。我们可以通…

    C# 2023年6月3日
    00
  • C#微信开发之自定义菜单管理

    C#微信开发之自定义菜单管理 简介 自定义菜单是公众号开发中最基本的功能之一,通过自定义菜单可以为用户提供更便捷的交互方式。本文将详细讲解使用C#开发微信自定义菜单的流程和方法。 准备工作 使用C#开发微信自定义菜单需要先完成以下准备工作: 成为微信公众号的开发者,开通公众号的开发权限。 在微信公众平台申请获得appid和appsecret两个关键信息。 在…

    C# 2023年5月31日
    00
  • C# Request.Form用法案例详解

    C# Request.Form用法案例详解 简介 Request对象是ASP.NET Web应用程序中的内置对象,用于在Web服务器上处理HTTP请求。其中,Request.Form是一个集合,用于获取HTTP POST的表单值。Request.Form的用法非常简单,可以通过指定表单控件的名称来获取该表单控件的值。 使用方法 //获取提交表单值 strin…

    C# 2023年6月1日
    00
  • ASP.net Core微信平台开发配置Token

    ASP.NET Core微信平台开发配置Token攻略 微信平台开发是一个非常流行的应用场景,许多企业和个人都在使用微信平台来开发自己的应用程序。在ASP.NET Core中,我们可以使用微信平台提供的API来实现微信平台开发。本攻略将介绍如何在ASP.NET Core中配置Token,以便我们可以使用微信平台API。 配置Token 在微信平台开发中,我们…

    C# 2023年5月17日
    00
  • Jenkins安装的时区问题分析解决

    Jenkins安装的时区问题分析解决 Jenkins 是一种流行的持续集成和持续交付工具,它可以帮助开发人员自动化构建、测试和部署应用程序。在安装 Jenkins 时,可能会遇到时区问题,导致 Jenkins 显示的时间不正确。本攻略将介绍如何分析和解决 Jenkins 安装的时区问题。 问题分析 Jenkins 显示的时间不正确可能是由于以下原因导致的: …

    C# 2023年5月17日
    00
  • Unity3D如何获取时间戳或北京时间

    获取时间戳或北京时间可以使用Unity3D内置的API来实现。下文将对获取时间戳和北京时间的方法进行详细讲解,并提供两个示例说明。 获取时间戳 方法一:使用System.DateTime.Now.Ticks属性 System.DateTime.Now.Ticks 返回自 0001 年 1 月 1 日午夜以来的 100 毫微秒间隔数,可以作为时间戳。要获取当前…

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