2015-12-01 1 views
2

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

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 проверить сверстники):

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

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

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 app, используя jsonlite из функции JSON?

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

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 

ответ

0

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

library(rjson) 
    library(jsonlite) 
    fromJSON(url, flatten=T) 
1

не пропустить SSL, попробуйте

fromJSON(content(GET("https://www.riigiteenused.ee/api/et/all"), "text")) 
+0

Еще одна ошибка: Ошибка в curl :: curl_fetch_memory (url, handle = handle): Сертификат peer не может быть аутентифицирован с данным CA ce rtificates –

+0

Хмм, я не знаю, как помочь. Этот звонок работает для меня. Интересно, если из-за блестящего приложения происходит плохое взаимодействие – sckott