我第一次尝试从" 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
谢谢!
答案 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"
)