Подключение к API данных о погоде - NOAA - PullRequest
0 голосов
/ 23 октября 2018

Я хочу получать данные о погоде через API для всех 50 штатов.Сайт, с которого я пытаюсь получить это: https://www.ncdc.noaa.gov/cdo-web/webservices/v2#gettingStarted

Я ищу данные о температуре и количестве осадков по штатам за январь 2017 г. - настоящее время по дням.

Ниже то, что я имею до сих пор.Я получил по электронной почте токен с именем «Weather Secret»

##Accessing Weather Data
weatherkey <- "nickknauer1@gmail.com"
weatherSecret <- "tzDOSkVWMToIXgVKfdOuOytFQvPkXTjv"
library("httr")
library("jsonlite")

response = POST(
  'https://www.ncdc.noaa.gov/cdo-web/api/token',
  accept_json(),
  authenticate(weatherkey, weatherSecret),
  body = list(grant_type = 'client_credentials'),
  encode = 'form',
  verbose()
)

token = content(response)$access_token
HeaderValue = paste0('Bearer ', token)

Это вывод:

-> POST /cdo-web/api/token HTTP/1.1  
-> Host: www.ncdc.noaa.gov
-> Authorization: Basic bmlja2tuYXVlcjFAZ21haWwuY29tOnR6RE9Ta1ZXTVRvSVhnVktmZE91T3l0RlF2UGtYVGp2
-> User-Agent: libcurl/7.59.0 r-curl/3.2 httr/1.3.1
-> Accept-Encoding: gzip, deflate
-> Content-Type: application/x-www-form-urlencoded
-> Accept: application/json
-> Content-Length: 29
-> 
>> grant_type=client_credentials

<- HTTP/1.1 500 Internal Server Error
<- Date: Mon, 22 Oct 2018 21:08:52 GMT
<- Server: Apache-Coyote/1.1
<- Strict-Transport-Security: max-age=31536000
<- Content-Type: application/json;charset=UTF-8
<- Access-Control-Allow-Origin: *
<- Vary: Accept-Encoding
<- Content-Encoding: gzip
<- Content-Length: 117
<- Connection: close

Кто-нибудь знает, почему это соединение не работает?

Я также попробовал ниже, и это тоже не сработало:

id_secret <- RCurl::base64(paste(weatherkey,weatherSecret,sep=':'))[[1]]
my_headers <- httr::add_headers(c(Authorization=paste('Basic',
                                                  id_secret,sep=' ')))
my_body <- list(grant_type='client_credentials')
my_token <- httr::content(httr::POST('https://www.ncdc.noaa.gov/cdo-web/api/token',
                                 my_headers,body=my_body,encode='form'))
...