我必须发帖子。问题是,将它的API作为web服务公开的应用程序已将其Content-Type设置为“text / plain”。我尝试了RCurl包和httpRequest包,但无法弄清楚如何设置内容类型。我试图直接对没有该内容类型的URL进行postrequest,然后postForm工作。这里有什么帮助吗?
编辑:我会尝试解释我在这里需要做什么。我有一个网址。我需要通过传递一些类似的参数来向它发出POST请求POST to "url/agents/where/agent?="Smith"
如果您使用chrome上的REST控制台扩展来进行Web服务调用,那么您可以键入此内容。我需要通过将content-type设置为“text / plain”
来从R中创建它我试过的是这个,
postForm("url/agents/get/all")
这就像魅力一样,在我们的例子中,调用所有代理的webservice调用不要求内容类型为“text / plain”,也不需要将任何参数传递给它(例如。没有特定的代理商名称,因为我想要所有这些名称)。我想我已经想出如何通过将列表中的名称值对赋给.opts来传递参数。我无法弄清楚的是如何设置内容类型。
我试过了,但失败了,
postForm("url/agents/where",
.opts = list(postfields = toJSON(list("name" = "Smith")),
httpheader = c('Content-Type' = 'text/plain', ssl.verifypeer = FALSE)))
答案 0 :(得分:3)
拥有您尝试过的代码会很有帮助,但一般的答案是您可以在httpheader
curlPerform
参数中指定它。这是the documentation的略微修改版本:
h <- basicTextGatherer()
h$reset()
curlPerform(url,
httpheader=c('Content-Type' = "text/plain"),
postfields=toJSON(list("name" = "Smith")),
customrequest = 'POST',
writefunction = h$update,
verbose = TRUE,
ssl.verifypeer = FALSE)
body <- h$value()