Как загрузить онлайн-данные JSON в блестящее приложение с помощью jsonlite?

Я пытаюсь создать блестящее приложение, которое берет данные из этого api: https://www.riigiteenused.ee/api/et/all. Мне нужно использовать jsonlite :: fromJSON, потому что у него хорошая функция сглаживания. Когда я использую следующий код (минимальный пример, в реальной жизни я делаю больше с данными):

library(jsonlite)
data=fromJSON("https://www.riigiteenused.ee/api/et/all")

server <- function(input, output) {
  output$tekst <- renderText({
  nchar(data)
   })
 }

ui <- fluidPage(
  sidebarLayout(
   sidebarPanel(),
    mainPanel(textOutput("tekst"))
 ))

shinyApp(ui = ui, server = server)

Я получаю следующее сообщение об ошибке:

Error in open.connection(con, "rb") : 
Peer certificate cannot be authenticated with given CA certificates

Я пробовал следующее (обойдите ssl verify peer):

library(RCurl)
raw <- getURL("https://www.riigiteenused.ee/api/et/all", 
.opts = list(ssl.verifypeer = FALSE), crlf = TRUE)
data=fromJSON(raw)

Он читает необработанные данные, но портит JSON (проверка (raw) показывает лексическую ошибку: недопустимый символ \ n внутри строки, что вызывает следующую ошибку):

Error: lexical error: invalid character inside string.
      ressile: [email protected].  Avaldusele soovitatavalt lis
                 (right here) ------^

Еще одна идея, которую я пробовал:

data=fromJSON(readLines("https://www.riigiteenused.ee/api/et/all"))

Он отлично работает на моем компьютере, но когда я загружаю его в приложение shinyapps.io, оно не работает, и из журналов я вижу ошибку:

Error in file(con, "r") : https:// URLs are not supported

Может ли кто-нибудь дать мне подсказку, есть ли способ загрузить данные JSON из приложения https toshiny с помощью функции jsonlite fromJSON?

Информация о моей сессии следующая:

R version 3.2.2 (2015-08-14)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 8 x64 (build 9200)

locale:
[1] LC_COLLATE=Estonian_Estonia.1257  LC_CTYPE=Estonian_Estonia.1257   
[3] LC_MONETARY=Estonian_Estonia.1257 LC_NUMERIC=C                     
[5] LC_TIME=Estonian_Estonia.1257    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] jsonlite_0.9.19 httr_1.0.0      RCurl_1.95-4.7 bitops_1.0-6          shiny_0.12.2   

loaded via a namespace (and not attached):
[1] Rcpp_0.12.2       digest_0.6.8      mime_0.4          R6_2.1.1         
[5] xtable_1.7-4      magrittr_1.5      stringi_1.0-1     curl_0.9.4       
[9] tools_3.2.2       stringr_1.0.0     httpuv_1.3.3      rsconnect_0.4.1.4
[13] htmltools_0.2.6  

person Risto Hinno    schedule 01.12.2015    source источник


Ответы (2)


не пропускай ssl, попробуй

fromJSON(content(GET("https://www.riigiteenused.ee/api/et/all"), "text"))
person sckott    schedule 01.12.2015
comment
По-прежнему дал мне ту же ошибку: Ошибка в curl :: curl_fetch_memory (url, handle = handle): сертификат однорангового узла не может быть аутентифицирован с помощью заданных сертификатов CA - person Risto Hinno; 07.12.2015
comment
Хм, не знаю, чем помочь. Этот призыв работает для меня. Интересно, не происходит ли плохое взаимодействие из блестящего приложения - person sckott; 07.12.2015

Я попробовал это решение, которое отлично работало на моем компьютере и на блестящем сервере:

  library(rjson)
  library(jsonlite)
  fromJSON(url, flatten=T)
person Risto Hinno    schedule 07.02.2016