2017-10-11 42 views
1

我写了一个简单的闪亮应用程序来说明我从网站获取数据的问题。下面是UI代码:通过URL获取数据的闪亮应用程序在本地工作,但不在shinyapps.io

library(shiny) 

shinyUI(fluidPage(

# Application title 
titlePanel("Test App"), 

# Sidebar with slider inputs 
sidebarLayout(
    sidebarPanel(
     actionButton("button", "Fetch Data") 
       ), 


    mainPanel(
     tabsetPanel(
      tabPanel("Data", textOutput("crimelist")) 
     ) 
    ) 
) 
) 
) 

这里是服务器代码:

library(shiny) 

# Define server logic 
shinyServer(function(input, output, session) { 

    # Get a list of the different types of crime 
    observeEvent(input$button, { 
     url <- "https://phl.carto.com/api/v2/sql?format=csv&q=SELECT 
       distinct rtrim(text_general_code) as text_general_code 
          FROM incidents_part1_part2 
          order by text_general_code" 
    crimelist <- read.csv(url(url), stringsAsFactors = FALSE)$text_general_code 
    output$crimelist <- renderText({crimelist}) 
    }) 
}) 

获取的数据在https://cityofphiladelphia.github.io/carto-api-explorer/#incidents_part1_part2描述。

当我在我的本地环境中运行这个闪亮的应用程序,它完美的作品。当将它发布到shinyapps.io并运行它时,当我单击按钮来获取数据时,应用程序将失败。在闪亮的日志中,它报告以下内容:

2017-10-11T14:46:31.242058+00:00 shinyapps[224106]: Warning in 
open.connection(file, "rt") : 
2017-10-11T14:46:31.242061+00:00 shinyapps[224106]: URL 'https://phl.carto.com/api/v2/sql?format=csv&q=SELECT distinct 
rtrim(text_general_code) as text_general_code 
2017-10-11T14:46:31.242062+00:00 shinyapps[224106]: FROM incidents_part1_part2 
2017-10-11T14:46:31.242063+00:00 shinyapps[224106]: order by text_general_code': status was 'URL using bad/illegal format or missing URL' 
2017-10-11T14:46:31.243062+00:00 shinyapps[224106]: Warning: Error in open.connection: cannot open connection 

我真的难住 - 这是一种闪亮的服务器问题吗?如果有人有线索,我全都是耳朵!

回答

1

我张贴在多个板这个问题,约书亚Spiewak在Shinyapps.io谷歌的用户群解决我的问题:

您需要的URL编码,以便它是有效的,例如https://phl.carto.com/api/v2/sql?format=csv&q=SELECT%20distinct%20rtrim(text_general_code)%20as%20text_general_code%20FROM%20incidents_part1_part2%20order%20by%20text_general_code

shinyapps.io在Linux上运行,所以很可能使用curl来获取此URL。我的猜测是你在本地使用Windows,它使用一个不太严格的机制,它可以容忍URL中的空格和换行符。

在提出他的建议更改后,它现在按预期工作。谢谢,约书亚!

相关问题