ITIS SOLR APIからいくつかのレコードを取得しようとしています。`httr :: POST`を使用してITIS SOLR APIに接続
私のクエリは、このように 、それは非現実的(不可能?)httr::GET
を使用するようになって、多くの場合、URLの文字制限を超えてストレッチします種の二項(例えば、Gulo gulo)の文字列で構成されます。私が理解しているように、 httr::POST
にはこの制限がありません。それで、私は に私の質問を渡しています。
私はPOST
を経由して渡すようにhttr
ドキュメントのいくつかの時間と体の適切な フォームに関する様々な議論 (e.g.)にもかかわらず、トラブルその飛躍を作っを抱えています。
すべてのヘルプははるかに高く評価されて...ここsolriumの
library(httr)
library(solrium)
spp_binom <- c("Sphyrapicus varius", "Odocoileus virginianus")
args <- list(wt = 'json')
body <- list(q = paste0('nameWOInd:(', paste(shQuote(spp_binom), collapse = " "), ')'))
body2 <- list(nameWOInd = paste(shQuote(spp_binom), collapse = " "))
# GET works
tt <- GET("http://services.itis.gov/",
query = c(body, args))
tt <- structure(content(tt, as = "text", encoding = "UTF-8"),
class = "sr_search", wt = 'json')
solrium:::solr_parse(tt, parsetype = "df", concat = ",")[, c(1,3,6,12)]
## Source: local data frame [2 x 4]
##
## tsn nameWOInd usage rank
## <chr> <chr> <chr> <chr>
## 1 178202 Sphyrapicus varius valid Species
## 2 180699 Odocoileus virginianus valid Species
# POST doesn't
tt <- POST(url="http://services.itis.gov/", encode = "json",
body = body) # same w/content_type_json()
solrium:::get_response(tt)
## [1] ""
tt <- POST(url="http://services.itis.gov/", encode = "json",
body = body2) # same w/content_type_json()
solrium:::get_response(tt)
## [1] ""
おかげ@sckott。私は 'ritis'を試みました。素晴らしいパッケージです。 :)あなたが知っているように、 'ritis :: itis_search'は' solrium :: solr_search'を呼び出します。これはGETと414エラーに直ちに戻ります。これがローカルでの使用のみを目的としていた場合、SQLダンプが最も簡単なルートになります。 ITISがPOSTリクエストについて語っていることを聞いていただければ幸いです。一方、私は文字列(この例では 'spp')を規則準拠のURL長を保証する長さに単純に切り詰めて、' lapply'で複数の 'solr_search'呼び出しに渡しました。 – manimal
私はあなたに知らせます私が見つけたもの – sckott