asp classic - example - Mailchimp RESTful API 3.0 HTTP Basic Auth
mailchimp v3 api (3)
Intento usar Mailchimp API versión 3.0 con autenticación básica. Estoy usando Classic ASP.
La respuesta de Json es siempre: "Falta clave de API".
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
Lo estoy enviando como un encabezado.
Qué estoy haciendo mal..?
La respuesta es:
HttpReq.setRequestHeader "Authorization", "apikey xxxxxx"
Si estás tratando de usar Basic Auth, necesitas seguir las especificaciones . Puedes construir el encabezado tú mismo usando el artículo wiki como tu guía, pero lo más fácil es usar el soporte integrado de tu biblioteca HTTP para eso. En tu caso, esto probablemente sea útil .
Para hacer la tuya, necesitas dos piezas de información. El primero es el nombre de usuario, el segundo es la contraseña. Para MailChimp v3.0, el nombre de usuario puede ser cualquier cosa. Tiendo a usar ''apikey'' como el nombre de usuario. La contraseña es la clave API en sí. Digamos que mi clave API es ''xxxxxxxxxx-yyy''. Ahora, usted Base 64 Codifique la cadena apikey:xxxxxxxxxx-yyy
. Eso me da YXBpa2V5Onh4eHh4eHh4eHgteXl5
. Ahora el encabezado que creo es:
Authorization: Basic YXBpa2V5Onh4eHh4eHh4eHgteXl5
El método que está utilizando funcionará, pero es muy personalizado para MailChimp y podría confundir a los visitantes futuros con su código.
Veo que la pregunta se basó en #C pero tuve el mismo problema con Java. (Soy nuevo en Java, así que no tuve problemas para editar mi código).
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());
}
}