Учитывая спецификацию API ...
POST https://api.euromonitor.com/authentication/connect/token HTTP/1.1
Host: api.euromonitor.com
Content-Type: application/x-www-form-urlencoded
Ocp-Apim-Subscription-Key: xxxyyyzzz
grant_type=string&username=xxx@acme.com&password=yyyzzz
... как включить параметры ключа подписки и grant_type в программу R для запроса данных?
Я предполагаю, что отправляю запрос Post
, но все, что я пробовал до сих пор (например, ниже), приводит к ошибке 400 Bad Request.
url <- "https://api.euromonitor.com/authentication/connect/token HTTP/1.1"
body_list <- list(subs_key="xxxyyyzzz",
grant_type="string&username=xxx@acme.com&password=yyyzzz")
r <- POST(url, body=body_list, encode="form", verbose())
UPDATE:
При более внимательном чтении документации Euromonitor выясняется, что grant_type находится в теле, а остальные параметры - в заголовке. Я изменил свою программу так:
url <- "https://api.euromonitor.com/authentication/connect/token HTTP/1.1"
r <- POST(url, add_headers(.headers=c("Host"="api.euromonitor.com",
"Content-Type"="application/x-www-form-urlencoded",
"Ocp-Apim-Subscription-Key"="xxxyyyzzz")),
body="grant_type=password&username=xxx@acme.com&password=yyyzzz", verbose())
Но я все еще получаю ошибку 400 Bad Request:
-> POST /authentication/connect/token HTTP/1.1 HTTP/1.1
-> Host: api.euromonitor.com
-> User-Agent: libcurl/7.59.0 r-curl/3.2 httr/1.4.0
-> Accept-Encoding: gzip, deflate
-> Accept: application/json, text/xml, application/xml, */*
-> Content-Type: application/x-www-form-urlencoded
-> Ocp-Apim-Subscription-Key: xxxyyyzzz
-> Content-Length: 69
->
>> grant_type=password&username=xxx@acme.com&password=yyyzzz
<- HTTP/1.1 400 Bad Request
<- Content-Type: text/html; charset=us-ascii
<- Date: Tue, 12 Mar 2019 02:55:39 GMT
<- Connection: close
<- Content-Length: 311