2016-06-15 2 views
0

R을 사용하여 API에서 데이터를 검색하려고했지만 아직 성공하지 못했습니다. 나는 HTTR 패키지와 GET 기능을 사용하여 R에 그 일을했지만, 내가 URL을 입력 할 때 나는 다음과 같은 오류가 발생합니다 :R을 API에 연결하고 사용자 이름과 암호를 전달하십시오.

오류 : 'new_handle'에서 내 보낸 객체가 아닌 '네임 스페이스 : 말림'

그것은 데이터에 연결하고 암호 및 사용자 이름과 같은 인수를 전달해야한다는 것입니다.

나는 (내가 우리 회사에 고유 URL을 익명화 한), 내가 원하는 것은 R에 유사한 방식으로 데이터에 연결하는 것입니다 작동하는 동료 일부 파이썬 코드가 수행

- ------------ 상응하는 파이썬 코드 : 어떤 도움도 대단히 감사하겠습니다 --------------

import urllib 
import datetime as dt 
import dateutil 
import json 

headers = {u'content-type': u'application/x-www-form-urlencoded; charset=UTF-8'} 
values = {"grant_type": "password", 
     "username": "XXXXXXXXX", 
     "password": "XXXXXXXXX", 
     "client_id": "PS"} 
ko = urllib.request.Request("XXXXXX", 
         urllib.parse.urlencode(values).encode("utf-8"), 
         headers) 
token = urllib.request.urlopen(ko).read() 
epic = token.decode() 
token_key = epic.split(",")[0].split(":")[1].replace('"', "") 
lines_to_write = list() 
lines_to_write.append("Identifier;Year;Period;Park Energy Availability [%]") 
start_day = dt.datetime(2015, 1, 1) 
data_day = start_day 
headers = {u'content-type': u'application/json', u'Authorization': 'Bearer ' + token_key} 
values = {'scope': {}, 'period': {'Begin': str(data_day).replace(" ", "T"), 'End': str(data_day + dateutil.relativedelta.relativedelta(months=1)).replace(" ", "T")}} 
hest = urllib.request.Request("XXXXXXXXX", json.dumps(values).encode(), headers) 
data = urllib.request.urlopen(hest) 
vild_hest = data.read() 

,

감사합니다. 트리스탄

+0

또한 오류가 발생한 R 코드를 게시 할 수 있습니까? – niczky12

+0

도서관 (httr) url = "XXXXXXX" GET (url) –

+1

'? GET'을 보았습니까? 'GET (url, authenticate ("username", "password"))'로 인증 정보를 전달할 수 있습니다. 어쩌면 그것을 시도해도 될까요? 코드에'values'의 다른 부분이 필요한 경우'config' 설정을 보낼 수도 있습니다. – niczky12

답변

0

제시 한 API의 R 코드는 필요한 것의 일부분이므로 작동하지 않습니다. 아래에서 R이 REST API를 사용하기 위해 필요한 구조를 찾습니다. 사용자 이름과 비밀번호는 POST 본문을 통해 API 서버에 전달됩니다 (아래 명시된 바와 같이 또는 본문에 목록으로 추가 될 수도 있음).

또한 키를 제공해야합니다 (아래의 경우 "API-KEY"). API 서버를 사용하여 인증을 시작하기 위해 POST를 보내고 있습니다. 대부분의 API 서버는 나중에 API 서버와 통신 할 때 사용할 1 또는 2 개의 키를 다시 전송합니다.

모든 http 상호 작용이 httr 패키지의 도움을 받는다는 것이 맞습니다. GET은 API 클라이언트와 API 서버 사이의 통신에서 나중 단계에서 사용되지만 첫 번째 인증 단계에서는 사용되지 않습니다.

POST (
url = "xxx", 
add_headers( 
"API-KEY" = "xxx", 
"VERSION" = "2", 
"Content-Type" = "application/json; charset=UTF-8", 
"Accept" = "application/json; charset=UTF-8"), 
body = "{identifier: xxx, password: xxx}" 
) 
관련 문제