5

我正在尝试将 Mailchimp API 3.0 版与基本身份验证一起使用。我正在使用经典 ASP。

Json 响应始终为:“API Key Missing”。

Set HttpReq = Server.CreateObject("MSXML2.ServerXMLHTTP")
HttpReq.open "GET", "https://us4.api.mailchimp.com/3.0/", False
HttpReq.setRequestHeader "Content-Type", "application/json"
HttpReq.setRequestHeader "apikey", "xxxxxx"
HttpReq.send ""
Response.Write  HttpReq.ResponseText
Set HttpReq = Nothing

我将其作为标题发送。

我究竟做错了什么..?

4

3 回答 3

9

答案是:

HttpReq.setRequestHeader "Authorization", "apikey xxxxxx"
于 2015-06-19T10:45:15.937 回答
1

如果您尝试使用 Basic Auth,则需要实际遵循规范。您可以使用 wiki 文章作为指南自己构建标头,但最简单的方法是使用您的 HTTP 库的内置支持。在您的情况下,这可能会有所帮助

要自己滚动,您需要两条信息。第一个是用户名,第二个是密码。对于 MailChimp v3.0,用户名可以是任何东西。我倾向于使用“apikey”作为用户名。密码是 API 密钥本身。假设我的 API 密钥是“xxxxxxxxxx-yyy”。现在,您对字符串进行 Base 64 编码apikey:xxxxxxxxxx-yyy。这给了我YXBpa2V5Onh4eHh4eHh4eHgteXl5。现在我创建的标题是:

Authorization: Basic YXBpa2V5Onh4eHh4eHh4eHgteXl5

您正在使用的方法将起作用,但对于 MailChimp 来说是非常自定义的,并且可能会使您的代码的未来访问者感到困惑。

于 2015-06-19T21:35:12.653 回答
0

我看到这个问题是基于 #C 的,但我对 java 也有同样的问题。(我是 java 新手,所以可以自由编辑我的代码)。

public String get(String url) throws IOException {
     HttpGet get = new HttpGet(url);
     String apiEncode = "apikey:9590e52MyAPI8-us9";
     String encoding = Base64.encodeBytes(apiEncode.getBytes());                     
     get.setHeader("Authorization","Basic " + encoding );
     HttpResponse response = http.execute(get);

    if (response.getEntity() != null) {
        return EntityUtils.toString(response.getEntity(), "UTF-8").trim();
    } else {
        throw new IOException(response.getStatusLine().toString());
    }
}
于 2015-06-25T12:25:49.137 回答