2016-06-15 9 views
0

Rを使用してAPIからデータを取得しようとしましたが、まだ成功していません。私は、HTTRのパッケージとGETの機能を使用してRでそれをやってみましたが、私はURLを入力するとき、私は次のエラーを取得する:RをAPIに接続し、ユーザー名とパスワードを渡します。

エラー:

:「カール名前空間」「のnew_handleは」からエクスポートされたオブジェクトではありません

それは、私がデータに接続したいということと、パスワードとユーザー名のような引数を渡さなければならないということです。

私は(私は私達の会社に固有のURLを匿名化している)働く同僚からいくつかのPythonコードを持っている、私が欲しいのはRで同様の方法でデータに接続するために、次のとおりです。

- ------------同等のPythonのコード:任意の助けをいただければ幸いです--------------

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}" 
) 
関連する問題