将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
相关产品推荐
相关产品推荐

