You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求调用接收APIGatewayHttpApiV2ProxyRequest的AWS Lambda的.NET Framework 4.8示例代码

.NET Framework 4.8调用AWS Lambda函数URL示例代码

首先需要安装Newtonsoft.Json NuGet包,用于处理JSON序列化和反序列化。

步骤1:定义请求/响应模型类

// 匹配Lambda函数的输入请求结构
public class LambdaRequest
{
    public string Body { get; set; }
}

// 匹配Lambda函数的响应结构
public class LambdaResponse
{
    public int StatusCode { get; set; }
    public string Body { get; set; }
}

步骤2:编写调用逻辑

using System;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json;

public class LambdaFunctionClient
{
    // 复用HttpClient实例,避免频繁创建导致的Socket资源耗尽
    private static readonly HttpClient _httpClient = new HttpClient();

    public async Task<string> ExtendLicenseKeyAsync(string inputKey)
    {
        const string lambdaFunctionUrl = "https://mi7ark5tunresgw25fdjstovuq0woylg.lambda-url.us-west-1.on.aws/";

        // 构造请求体
        var requestPayload = new LambdaRequest { Body = inputKey };
        var jsonPayload = JsonConvert.SerializeObject(requestPayload);
        var httpContent = new StringContent(jsonPayload, System.Text.Encoding.UTF8, "application/json");

        // 发送POST请求
        var httpResponse = await _httpClient.PostAsync(lambdaFunctionUrl, httpContent);

        // 处理HTTP状态码
        if (!httpResponse.IsSuccessStatusCode)
        {
            if (httpResponse.StatusCode == System.Net.HttpStatusCode.NotAcceptable)
            {
                throw new ArgumentException("输入的Key长度必须为48位");
            }
            // 其他错误直接抛出异常
            httpResponse.EnsureSuccessStatusCode();
        }

        // 解析响应内容
        var responseJson = await httpResponse.Content.ReadAsStringAsync();
        var lambdaResponse = JsonConvert.DeserializeObject<LambdaResponse>(responseJson);

        // 反序列化Lambda返回的Body(因为Body是序列化后的字符串)
        return JsonConvert.DeserializeObject<string>(lambdaResponse.Body);
    }
}

步骤3:调用示例

// 在异步方法中执行调用
var client = new LambdaFunctionClient();
try
{
    string inputKey = "Q0FDREJBQUItOEFBQi00QUFFLTlBQUUtNkFBQUFBQWNkM2U5";
    string newLicenseKey = await client.ExtendLicenseKeyAsync(inputKey);
    Console.WriteLine($"生成的新授权Key: {newLicenseKey}");
}
catch (Exception ex)
{
    Console.WriteLine($"调用失败: {ex.Message}");
}

关键说明

  • HttpClient复用:不要每次调用都创建新的HttpClient实例,复用实例可以避免Socket资源泄露。
  • 错误处理:针对Lambda函数返回的406(NotAcceptable)状态码做了针对性处理,提示输入Key长度不符合要求。
  • JSON解析:Lambda函数返回的Body是序列化后的字符串,因此需要二次反序列化才能得到最终的结果。

内容的提问来源于stack exchange,提问作者T. J. Fan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 07:35:35