如何使用R将json格式的数据发布到特定的网站?

时间:2018-01-29 18:08:06

标签: json r

我第一次尝试从" R"上传JSON格式的数据。到了网站,但在这个网站上花了几天之后,我无法让它工作,看到网站本身反映的输出。

  

注意:示例中提供的数字和字母不是真实的

这就是我在做的事情:

1)这是我试图使用R上传/发布到服务器的JSON格式(由网站提供所请求的表格,因为我试图直接从内部网站通过它调用它用于执行此POST操作的已设置按钮。)

 {
   "warehouseId": ["BNA5"],
   "planType": ["OP2"],
   "lineItemPlans": [
     {
       "lineItemId": ["ppr.detail.outbound.pack.chuting.medium"],
       "type": ["BaseUnitCount"],
       "values": [2]
     },
     {
       "lineItemId": ["ppr.detail.outbound.pack.chuting.medium"],
       "type": ["BaseRate"],
       "values": [0.4]
     }
   ],
   "planDates": [1516921200]
 }

2)这是我正在运行的用于发布数据的当前代码(使用库(httr)):

r <- POST("http://fclm-labor-reporting-service.integ.amazon.com/explorer/index.html", 
          body = '{
  "warehouseId": ["BNA5"],
          "planType": ["OP2"],
          "lineItemPlans": [
          {
          "lineItemId": ["ppr.detail.outbound.pack.chuting.medium"],
          "type": ["BaseUnitCount"],
          "values": [2]
          },
          {
          "lineItemId": ["ppr.detail.outbound.pack.chuting.medium"],
          "type": ["BaseRate"],
          "values": [0.4]
          }
          ],
          "planDates": [1516921200]
          }')

网站是内部的,只是尝试的网站是假的。你无法访问它,虽然我想你可以帮助我同样建立代码:)

3)对我来说,在运行代码后,它似乎有效(我看到例如Status:200)。以下是回复:

Response [http://fclm-labor-reporting-service.integ.amazon.com/explorer/index.html]
  Date: 2018-01-29 18:02
  Status: 200
  Content-Type: text/html
  Size: 54.6 kB
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml11-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta name="author" content="Coral"/>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <title>FCLMLaborReportingService Explorer</title>
    <link rel="stylesheet" type="text/css" href="style.css"/>
    <script type="text/javascript" src="https://internal-cdn.amazon.com/sentry.amazon.com/public/javascripts/openid.xhr.js"></...
...

但是,我在网站上检查结果输出时看到没有修改显示。

我非常感谢您是否可以提供您的想法和帮助代码,因为您在这一方面肯定比我更聪明:D

谢谢!

1 个答案:

答案 0 :(得分:0)

最可能的问题是服务器无法读取数据。确保您正在设置correct Content-Type header

POST(
    url = "http://fclm-labor-reporting-service.integ.amazon.com/explorer/index.html",
    config = content_type("application/json"),
    body = ...
)

另外值得一提的是,您可以通过adding the encode parameter to the POST call自动将R数据结构转换为JSON。您没有指定数据的来源,但它可以为您节省额外的一步。例如。像这样的东西:

the_data <- list(
    warehouseId = c("BNA5"),
    planType = c("OP2"),
    lineItemPlans = data.frame(
        lineItemId = c("ppr.detail.outbound.pack.chuting.medium", "ppr.detail.outbound.pack.chuting.medium"),
        type = c("BaseUnitCount", "BaseRate"),
        values = c(2, 0.4)
    ),
    planDates = c(1516921200)
)
POST(
    url = "http://fclm-labor-reporting-service.integ.amazon.com/explorer/index.html",
    body = the_data,
    encode = "json"
)