perl - Mailchimp API 400 和 404 错误
问题描述
我正在使用自定义注册表单使用 Curl 将用户添加到 Mailchimp 列表 (API v3.0)。虽然该过程大部分时间都有效,但我偶尔会遇到 400 错误。
我认为问题可能与附加到 URL 字符串的 MD5 哈希返回的二进制值有关,因此我尝试使用 base 64 哈希。使用之前失败的注册数据,添加成功。
后来又几次注册成功后,收到404错误,提示url路径错误。当我捕获 url 时,我注意到 base 64 摘要包含一个“/”字符,它会终止该部分 url 字符串。
当我用另一个(随机)字母字符替换“/”时,添加正确完成......没有错误。
(1) 我不确定为什么二进制 md5 电子邮件哈希会偶尔产生错误,以及 (2) 如果可以使用正则表达式替换另一个字母字符来代替偶尔出现的“/”。似乎是一个潜在的问题黑客。
这现在似乎工作了(没有错误,很好的补充),但我担心修改后的 base 64 散列,它不再是电子邮件地址的真正散列:
my $digest = md5_base64(lc($email));
$digest =~ s/\//x/;
my $curl = WWW::Curl::Easy->new;
my $url = "$endpoint/$listid/members/" . $digest;
由于使用已在其他地方发布的 Mailchimp API 代码的修改版本,所有通过注册表单添加的内容都可以正常工作。
解决方案
推荐阅读
- java - Android Studio Java中的每个目标源?
- android - 从同一个视图在屏幕上获取两个触摸点
- vue.js - 对 fonts.googleapis.com 的样式表引用有时似乎无法加载或损坏
- python - 无法从已从其他 Web 服务插入几秒钟的 SQL 中读取行
- regex - 使用正则表达式解析带编号的分隔字符串
- angular - 在使用 JHipster 创建的 Spring Boot 应用程序中使用 npm install 时出错
- php - 无法使用 @ParamConverter 声明自动装配实体参数
- python - PYGAME:如何碰撞 2 个类的 2 组精灵和“AttributeError: type object 'Player' has no attribute 'rect'”
- excel - 如何防止 Python 禁用现有 Excel 工作簿中的下拉列表?
- wordpress - Wordpress:长词在发送 API Restful 之前被截断