.Net Framework请求外部Api

要在.NET Framework 4.5中进行外部API的POST请求,你可以使用HttpClient类。

1. Post请求

csharp 复制代码
using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // 创建一个HttpClient实例
        using (HttpClient client = new HttpClient())
        {
            try
            {
                // 创建请求的内容
                var requestData = new { Name = "John", Age = 30 };
                var content = new StringContent(JsonConvert.SerializeObject(requestData), System.Text.Encoding.UTF8, "application/json");

                // 发起POST请求并获取响应
                HttpResponseMessage response = await client.PostAsync("https://api.example.com/some-endpoint", content);

                // 确认请求成功
                response.EnsureSuccessStatusCode();

                // 读取响应内容
                string responseBody = await response.Content.ReadAsStringAsync();

                // 处理响应数据
                Console.WriteLine(responseBody);
            }
            catch (HttpRequestException e)
            {
                // 处理请求异常
                Console.WriteLine($"请求异常: {e.Message}");
            }
        }
    }
}

另外,post传参还有另外一种方式,使用FormUrlEncodedContent

csharp 复制代码
var content = new FormUrlEncodedContent(new Dictionary<string, string>()
 {
     {"empid", "E01930"},
 });

2. Get请求

cpp 复制代码
// 创建一个HttpClient实例
using (HttpClient client = new HttpClient())
{
// 设置API的URL
string apiUrl = "http://nhbsapt01:801/accountreviewautoupdate";
string fullUrl = apiUrl + "?empid=" + "A00001";

try
{
    // 发送POST请求并获取响应
    // HttpResponseMessage response = client.PostAsync(apiUrl, content).Result;
    HttpResponseMessage response = client.GetAsync(fullUrl).Result;

    // 确保请求成功
    response.EnsureSuccessStatusCode();

    // 读取响应内容
    string responseBody = response.Content.ReadAsStringAsync().Result;

    // 处理响应数据
    Console.WriteLine(responseBody);
}
catch (Exception ex)
{
    Console.WriteLine("Error: " + ex.Message);
}

3. 奇葩(post请求url传参)

csharp 复制代码
// 创建一个HttpClient实例
using (HttpClient client = new HttpClient())
{
    // 设置API的URL
    string apiUrl = "http://nhbsapt01:801/accountreviewautoupdate";
    string fullUrl = apiUrl + "?empid=" + "A00001";

    // 构造要发送的参数
    var postData = new Dictionary<string, string>
    {
        { "empid", "A00001" },
    };

    // 将参数转换为表单编码格式
    var content = new FormUrlEncodedContent(postData);

    try
    {
        // 发送POST请求并获取响应
        // HttpResponseMessage response = client.PostAsync(apiUrl, content).Result;
        HttpResponseMessage response = client.PostAsync(fullUrl,content).Result;

        // 确保请求成功
        response.EnsureSuccessStatusCode();

        // 读取响应内容
        string responseBody = response.Content.ReadAsStringAsync().Result;

        // 处理响应数据
        Console.WriteLine(responseBody);
    }
    catch (Exception ex)
    {
        Console.WriteLine("Error: " + ex.Message);
    }
相关推荐
唐青枫14 小时前
别只会看日志:C#.NET SOS 调试扩展从 Dump 到内存泄漏排查
c#·.net
yswenli21 小时前
基于C#开发网站视频嗅探下载工具——BrowserVideoGrabber
c#·videodownload·webvideodownload·videograbber
Lost of 程序猿21 小时前
M2 实战:询价与采购订单聚合落地——跨聚合一致性、领域事件与 Outbox
开发语言·c#·asp.net·.net
有梦想的咕噜1 天前
Newtonsoft.Json (Json.NET) 常用方法汇总
linux·json·.net
Polevne1 天前
C# GRPC 一元与双向流
linux·算法·c#
XiaoZhenHua982 天前
C#工业机器视觉Recipe配方系统设计:多型号、多相机、多工位参数如何统一管理
c#·软件架构·机器视觉·工业自动化·工业软件·recipe
fujisheng6612 天前
FUI 导航实践:拆开 Layer、History、Coverage 与 Cache 的组合语义
c#·unity3d
淡海水2 天前
10-05-高级-模式匹配-CSharp如何改变与数据结构的交互方式
数据结构·算法·c#·模式匹配
XiaoZhenHua982 天前
C# WinForms + 西门子S7 + SQLite + EPPlus生产数据采集系统架构设计
系统架构·sqlite·c#
Lost of 程序猿2 天前
船岸数据同步链路实战:SendFlag、单调版本号与断网三天后的续传
后端·c#·asp.net