R конвертировать Python GET в R http GET - PullRequest
1 голос
/ 10 мая 2019

Я пытаюсь преобразовать работающую программу на Python, которая получает информацию с веб-сайта с ключом API в его эквивалент R. Так как я не знаю много о httr или Python, это вызов. Код Python (несколько сокращенно и с фиктивным X-ApiKey)

url = 'https://api.clarivate.com/api/woslite'
query = 'ts=((land AND ocean AND climate AND change)) AND PY=2013-2019'
count = 100
firstRecord = 1
parameters = {'databaseId': 'WOK', 'usrQuery': query, 'count': count, 'firstRecord': firstRecord}
headers={'accept':'application/json','X-ApiKey':'********'}
 response = requests.get(url,params=parameters, headers=headers)

Моя попытка версии R

library(httr)
wosliteKey <- Sys.getenv("wosliteKey")

firstRecord <- 1
count <- 100
url <- 'https://api.clarivate.com/api/woslite'
query <- 'ts=(land AND ocean AND climate AND change) AND PY=2013-2019'

r <- GET(url, query = list(api_key = wosliteKey, usrQuery = query, databaseId = 'WOK', count = count, firstRecord = firstRecord))

Запуск вышеуказанных возвратов

Response [https://api.clarivate.com/api/woslite]
  Date: 2019-05-09 22:50
  Status: 401
  Content-Type: application/json; charset=utf-8
  Size: 41 B

статус 401 означает несанкционированный доступ. Код Python использует X-ApiKey вместо api_key. Но я не могу понять. какая разница и б. как поместить его в список запросов.

Ответы [ 2 ]

1 голос
/ 10 мая 2019

С помощью приведенных выше комментариев я понял, как сделать эту работу.Python-версия httr GET выглядит следующим образом

response = requests.get(url,params=parameters, headers=headers)

. Для моей задачи у меня есть следующее из программы python

parameters = {'databaseId': 'WOK', 'usrQuery': query, 'count': count, 'firstRecord': firstRecord}
headers={'accept':'application/json','X-ApiKey':'********'}

Эквивалент с httr GET равен

response <- httr::GET(url, httr::add_headers(accept = 'application/json', `X-APIKey` = wosliteKey), query = list(databaseId = 'WOK', usrQuery = query, count = count, firstRecord = firstRecord))

Информация о заголовках python заменяется функцией add_headers из httr.Информация о параметрах python добавляется в виде списка в опцию запроса.

0 голосов
/ 10 мая 2019

Я искал некоторое время, но обнаружил, что что-то работает с вашей проблемой.

пакет Android - вложенный класс R.attr - с использованием ключа API

...