使用RestSharp调用GetResponse API添加联系人遇400错误求助
解决GetResponse API添加联系人时的400 Bad Request问题
嘿,我帮你排查了下代码里的问题,HTTP 400错误基本上是请求格式不符合API要求导致的,你的代码里有几个明显的矛盾点,咱们一步步来修正:
核心问题分析
- 请求格式混乱:你同时准备了JSON序列化对象,又手动构造了
application/x-www-form-urlencoded的请求体,但GetResponse v3 API只接受JSON格式的请求,这直接让API无法解析你的请求,返回400。 - Campaign ID不统一:代码里出现了好几个不同的Campaign ID(
IDss6604303、ID85104303、注释里的ee104303),这会导致API找不到对应的活动列表,也是报错的潜在原因。 - 请求头配置缺失:你没设置正确的
Content-Type头,API不知道你发的是JSON数据。
修正后的完整代码
控制器代码(修复版)
string email = "test@gmail.com"; // 替换成你要添加的"liakat"活动的真实ID,或者测试用的"pikaa"的ee104303 string targetCampaignId = "ee104303"; // 替换为你的有效API密钥 string apiKey = "948dsdfsdfs1a017a07f3c6"; var client = new RestClient("https://api.getresponse.com/v3/contacts"); var request = new RestRequest(Method.POST); // 配置必要的请求头:认证令牌和JSON格式声明 request.AddHeader("X-Auth-Token", $"api-key {apiKey}"); request.AddHeader("Content-Type", "application/json"); // 构造符合API要求的请求体对象 var contactPayload = new RootObject { name = "Mr Men", email = email, campaign = new Campaign { campaignId = targetCampaignId } }; // 用RestSharp自带的方法添加JSON请求体,不用手动序列化 request.AddJsonBody(contactPayload); var response = client.Execute(request); // 调试时可以打印响应内容,API会返回具体的错误信息(如果还有问题) Console.WriteLine("响应状态码:" + response.StatusCode); Console.WriteLine("响应内容:" + response.Content);
模型代码(保持不变即可)
public class Campaign { public string campaignId { get; set; } } public class RootObject { public string name { get; set; } public string email { get; set; } public Campaign campaign { get; set; } }
额外调试小技巧
- 如果还是报错,一定要看
response.Content里的内容,GetResponse的API会告诉你具体是哪个字段错了(比如邮箱格式不对、Campaign ID不存在) - 可以先调用
GET https://api.getresponse.com/v3/campaigns接口,确认你用的Campaign ID确实对应"liakat"活动 - 确保你的API密钥有创建联系人的权限,别用只读权限的密钥
内容的提问来源于stack exchange,提问作者Kevin himch
相关产品推荐
相关产品推荐

