Mailchimp 错误 400 请求,无法将用户发送到列表

Posted

技术标签:

【中文标题】Mailchimp 错误 400 请求,无法将用户发送到列表【英文标题】:Mailchimp error 400 request, can't send users to list 【发布时间】:2018-06-24 05:36:10 【问题描述】:

我正在使用 Mailchimp,我想向我的列表发送一个电子邮件地址,到目前为止,我已经使用 Volley 完成了此操作:

public void suscribeMailChamp()
    String listid = "listID";
    String url = "https://us16.api.mailchimp.com/3.0/lists/" + listid + "/members/";
    // Instantiate the RequestQueue.
    RequestQueue queue = Volley.newRequestQueue(this);

    StringRequest sr = new StringRequest(Request.Method.POST,url, new Response.Listener<String>() 
        @Override
        public void onResponse(String response) 
            //
            Toast.makeText(MainActivity.this , "success" , Toast.LENGTH_SHORT).show();
        
    , new Response.ErrorListener() 
        @Override
        public void onErrorResponse(VolleyError error) 
            Toast.makeText(MainActivity.this , error.toString() , Toast.LENGTH_SHORT).show();
        
    )
        @Override
        protected Map<String,String> getParams()
            Map<String,String> params = new HashMap<String, String>();
            params.put("email_address","testmailchimp@gmail.com");
            params.put("status","unsubscribed");
            return params;
        

        @Override
        public Map<String, String> getHeaders() throws AuthFailureError 
            Map<String,String> params = new HashMap<String, String>();
            params.put("Content-Type","application/x-www-form-urlencoded");
            params.put("Authorization" , "apikey <here my api key>");
            return params;
        
    ;
    queue.add(sr);

但我收到错误 400:

意外的响应代码 400 https://us16.api.mailchimp.com/3.0/lists/b9a5943047/members/

这是一个故障排除链接,但我无法得到错误:

http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/

【问题讨论】:

【参考方案1】:

您是否检查了链接中的错误?它说

  
   "type":"http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/",
   "title":"API Key Missing",
   "status":401,
   "detail":"Your request did not include an API key.",
   "instance":"924c81cc-90e9-498d-b0fd-c7b54cba207f"

这意味着您没有(或正确地)在请求中发送邮件黑猩猩的 API 密钥。只需在 Volley 请求的参数中添加 mailChimp API 密钥


所以你发送 API 密钥的方式是这样的

params.put("Authorization", "Basic "+Base64.encodeToString(("apikey:"+apiKey).getBytes("UTF-8"),Base64.DEFAULT))

【讨论】:

我在这里发送 params.put("Authorization" , "apikey myapikey"); 你也告诉我链接里有什么,我已经读过了 不,我是说您以错误的方式发送 API 密钥。让我看看文档 尝试这样做以获得授权参数params.put("Authorization", "Basic apikey:&lt;here my api key&gt;") with params.put("Authorization", "apikey ");我收到错误 404【参考方案2】:

我也陷入了困境。 Mailchimp 文档很差。 我找到了解决方案from github

只需在标题中发送 'Authorization': 'apikey myapikey'

【讨论】:

以上是关于Mailchimp 错误 400 请求,无法将用户发送到列表的主要内容,如果未能解决你的问题,请参考以下文章

Laravel + Guzzle + MailChimp - 400 错误请求

Wordpress:在没有插件的情况下集成 Mailchimp 错误请求 400 Ajax URL

尝试将新成员添加到 MailChimp 列表会导致错误 400(“此值不应为空”)

Mailchimp 错误收件人最近的注册请求太多

尝试在 mailchimp 中添加联系人时出现错误 400

http请求400错误