1

我必须提出一个帖子请求。问题是,将其 api 公开为 web 服务的应用程序已将其 Content-Type 设置为“text/plain”。我尝试了 RCurl 包和 httpRequest 包,但不知道如何设置内容类型。我尝试直接向没有该内容类型的 URL 发出后请求,然后 postForm 工作。这里有什么帮助吗?

编辑:我将尝试解释我需要在这里做什么。我有一个网址。我需要通过向它传递一些类似这样的参数来向它发出 POST 请求

POST to "url/agents/where/agent?="Smith"

如果您使用 chrome 上的 REST 控制台扩展程序来进行 Web 服务调用,这就是您要键入的内容。我需要通过将内容类型设置为“文本/纯文本”来从 R

我试过的是这个,

postForm("url/agents/get/all")

这就像在我们的案例中所说的那样,调用所有代理的 web 服务调用不需要内容类型为“text/plain”,也不需要任何参数传递给它(例如,没有特定的代理我想要所有的名字)。我想我已经弄清楚了如何通过将列表中的名称值对提供给.opts 来传递参数。我无法弄清楚的是如何设置内容类型。

我试过这个,但失败了,

postForm("url/agents/where",
         .opts = list(postfields = toJSON(list("name" = "Smith")),
         httpheader = c('Content-Type' = 'text/plain', ssl.verifypeer = FALSE)))
4

1 回答 1

3

拥有您尝试过的代码会很有帮助,但一般的答案是您可以httpheadercurlPerform. 这是文档中稍作修改的版本:

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()
于 2013-10-03T11:09:56.533 回答