使用 Java 和 Jersey 客户端向 Mailchimp 受众添加新订阅者

Posted

技术标签:

【中文标题】使用 Java 和 Jersey 客户端向 Mailchimp 受众添加新订阅者【英文标题】:Adding a new subscriber to a Mailchimp audience using Java and a Jersey Client 【发布时间】:2019-10-27 06:12:51 【问题描述】:

我需要将订阅者添加到 mailchimp 受众。我正在使用 Java 和 Jersey 客户端。我可以使用 Mailchimp 3.0 API 轻松获取观众成员。为了成功添加新订阅者,我必须对我的发布请求进行哪些更改?当我的代码失败时,没有响应。然后,当我检查 Mailchimp 帐户并看到没有添加新订阅者时。

class MailchimpClient 

    Client client;
    String mailchimpUrl;

    public MailchimpClient() 
        String mailchimpApikey = getAPIKey();
        String datacenter = mailchimpApikey.substring(mailchimpApikey.lastIndexOf('-') + 1);
        mailchimpUrl = "https://" + datacenter + ".api.mailchimp.com/3.0/";

        JacksonJsonProvider jjp = new JacksonJsonProvider();
        jjp.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        ClientConfig conf = new ClientConfig();
        conf.property(ClientProperties.CONNECT_TIMEOUT, TIMEOUT);
        conf.property(ClientProperties.READ_TIMEOUT, TIMEOUT);
        conf.register(jjp);

        HttpAuthenticationFeature httpAuth = HttpAuthenticationFeature.basic("username", mailchimpApikey);

        client = ClientBuilder.newClient(conf).register(httpAuth);
    

    public <T> T get(String path, Class<T> responseType) 
        T t = client.target(mailchimpUrl).path(path).request(MediaType.APPLICATION_JSON).get(responseType);
        client.close();
        return t;
    

    public <T> T post(String path, Object payload, Class<T> responseType) 
        Entity<Object> entity = Entity.entity(payload, MediaType.APPLICATION_JSON);
        T t = client.target(mailchimpUrl).path(path).request(MediaType.APPLICATION_JSON).post(entity, responseType);
        client.close();
        return t;
    

    String audienceid = xxxxxxx;
    MailchimpClient mcc = new MailchimpClient();
    MembersResponse mr = mcc.get("lists/" + audienceid + "/members", MembersResponse.class);
    addToMailchimpAudience(String audienceid);

private Message addToMailchimpAudience(String audienceid) 
    HashMap<String, String> newMember = new HashMap<String, String>();
    newMember.put("email_address", "bob@gmail.com");
    newMember.put("status", "subscribed");
    MailchimpClient mcc = new MailchimpClient();
    MembersResponse mr = mcc.post("lists/" + audienceid + "/members", newMember, MembersResponse.class);
    logger.info("response: " + mr);
    return Message.success("Successfully added new member to mailchimp audience");


【问题讨论】:

【参考方案1】:

添加新成员的请求应该是 JSON 将联系人添加到列表/受众

要将联系人添加到列表/受众,请将 POST 请求发送到 List Members 端点:/3.0/lists/9e67587f52/members/。请求正文应该是一个 JSON 对象,其中包含您要添加的信息、状态和任何其他必需的列表字段。

"email_address": "urist.mcvankab@freddiesjokes.com", “状态”:“订阅”, “合并字段”: "FNAME": "乌里斯特", “LNAME”:“麦克万卡布”

我观察到您在 HasMap 中发送值,尝试转换为 JSON 并查看它是否有效

供您参考的链接: https://developer.mailchimp.com/documentation/mailchimp/guides/manage-subscribers-with-the-mailchimp-api/

【讨论】:

以上是关于使用 Java 和 Jersey 客户端向 Mailchimp 受众添加新订阅者的主要内容,如果未能解决你的问题,请参考以下文章

如何在java REST API中用GZip和Jersey压缩相应

java Jersey 2.1客户端线程安全吗?

无法使用 Jersey 客户端解组 JSON 对象数组

使用 Jersey 客户端的 PATCH 请求

HTTP流与Java jersey客户端异常丢弃

Vertx和Jersey集成使用