1

主に私自身の理解のために、RCurlまたはhttrを使用して、次のおもちゃのCURLの例をRにどのように変換しますか:

  curl -v -X POST \
    https://someurl/endpoint \
-H "Content-Type: application/json" \
-H 'X-Api-Key: abc123' \
-d '{"parameters": [ 1, "foo", "bar" ]}'

どちらのパッケージも、単純な GET リクエストを超えるものには少し扱いに​​くいと思います。

私はもう試した:

library(httr)
 POST("https://someurl/endpoint", authenticate("user", "passwrd"), 
body = '{"parameters": [ 1, "foo", "bar" ]}', content_type_json())

400 ステータスを取得します。私の Curl バージョンは完璧に動作します。

また試しました:

POST("https://someurl/endpoint", add_headers('X-Api-Key: abc123'), 
body = '{"parameters": [ 1, "foo", "bar" ]}', content_type_json())

また、400ステータスを取得します。

問題はヘッダーの設定にあると確信しています。

4

3 に答える 3

1

テストには httpbin.org を使用できます。試す:

curl -v -X POST \
    https://httpbin.org/post \
-H "Content-Type: application/json" \
-H 'X-Api-Key: abc123' \
-d '{"parameters": [ 1, "foo", "bar" ]}'

結果を保存して、以下と比較してみてください。

library(httr)

result <- POST("http://httpbin.org/post",
               verbose(),
               encode="json",
               add_headers(`X-Api-Key`="abc123"),
               body=list(parameters=c(1, "foo", "bar")))

content(result)

これは非常にわかりやすいマッピングです。

于 2015-01-20T22:57:36.083 に答える
0

重要なのは、誰かが興味を持った場合に備えて、ヘッダー名をエスケープすることです。直訳は以下の通り。

POST("http://httpbin.org/post",
add_headers(`X-Api-Key`="abc123", `Content-Type` = "application/json"),
body='{"parameters": [ 1, "foo", "bar" ]}')
于 2015-01-21T15:30:36.793 に答える