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

将RestSharp实现的GetResponse API请求转为HttpWebRequest示例

改用HttpWebRequest实现GetResponse API调用的C#示例

嘿,作为C#新手遇到RestSharp调用API的问题太正常了,我帮你把代码转换成HttpWebRequest的实现,还给你标注了关键细节,方便你理解每一步的作用~

先提个小细节:你原来的RestSharp代码里,X-Auth-Token的头名称多了个冒号(写成了"X-Auth-Token:"),这可能也是导致异常的原因之一,不过下面的HttpWebRequest代码已经帮你修正了这个问题。

另外,POST请求到GetResponse的/campaigns接口是需要提交JSON请求体的,你原来的代码里没加这部分,这大概率是运行异常的核心原因,所以示例里也补上了基础的请求体,你记得根据自己的需求修改内容哦。

下面是完整的实现代码:

using System;
using System.IO;
using System.Net;
using System.Text;

class Program
{
    static void Main(string[] args)
    {
        // API完整接口地址
        string apiUrl = "https://api.getresponse.com/v3/campaigns";
        // 替换成你自己的GetResponse API密钥
        string apiKey = "948dff91a017a07f3c6";

        try
        {
            // 创建HttpWebRequest实例,指定请求的API地址
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(apiUrl);
            request.Method = "POST"; // 设置请求方法为POST
            request.ContentType = "application/json"; // 声明请求内容为JSON格式

            // 添加认证请求头:格式是"api-key 你的密钥",头名称不要加冒号
            request.Headers.Add("X-Auth-Token", $"api-key {apiKey}");

            // 构造符合GetResponse API要求的JSON请求体
            // 你需要根据实际需求修改这里的内容,比如替换fromFieldId为你账户里的有效ID
            string requestBody = @"
            {
                ""name"": ""我的测试邮件活动"",
                ""fromField"": { ""fromFieldId"": ""YOUR_FROM_FIELD_ID"" },
                ""subject"": ""测试活动主题""
            }";

            // 将JSON字符串转换为字节数组,准备写入请求流
            byte[] requestBodyBytes = Encoding.UTF8.GetBytes(requestBody);
            request.ContentLength = requestBodyBytes.Length;

            // 写入请求体到请求流
            using (Stream requestStream = request.GetRequestStream())
            {
                requestStream.Write(requestBodyBytes, 0, requestBodyBytes.Length);
            }

            // 发送请求并获取响应
            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            {
                // 读取响应内容并输出
                using (Stream responseStream = response.GetResponseStream())
                {
                    using (StreamReader reader = new StreamReader(responseStream))
                    {
                        string responseContent = reader.ReadToEnd();
                        Console.WriteLine("API响应内容:");
                        Console.WriteLine(responseContent);
                    }
                }
            }
        }
        catch (WebException ex)
        {
            // 捕获并输出请求异常信息,方便调试
            if (ex.Response != null)
            {
                using (HttpWebResponse errorResponse = (HttpWebResponse)ex.Response)
                {
                    using (StreamReader reader = new StreamReader(errorResponse.GetResponseStream()))
                    {
                        string errorDetails = reader.ReadToEnd();
                        Console.WriteLine($"请求失败,状态码:{(int)errorResponse.StatusCode} {errorResponse.StatusDescription}");
                        Console.WriteLine("错误详情:");
                        Console.WriteLine(errorDetails);
                    }
                }
            }
            else
            {
                Console.WriteLine($"请求出现异常:{ex.Message}");
            }
        }
    }
}

关键说明:

  • 认证头设置:X-Auth-Token的格式必须是api-key 你的密钥,头名称不要额外加冒号,这是API要求的格式。
  • 请求体必填:POST创建活动必须提交符合要求的JSON数据,示例里的字段是基础必填项,你可以参考GetResponse的API文档补充更多字段。
  • 异常处理:代码里添加了WebException捕获,能帮你查看具体的错误状态码和详情,比如权限问题、参数错误都能在这里看到具体提示,方便你调试。

内容的提问来源于stack exchange,提问作者Kevin himch

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:00:38