2013-10-03 25 views
1

我必須提出要求。問題是,將它作爲api公開的應用程序已將它的Content-Type設置爲「text/plain」。我試過RCurl包和httpRequest包,但無法弄清楚如何設置內容類型。我試圖直接向一個沒有該內容類型的URL發佈postrequest,然後postForm工作。這裏有幫助嗎?如何在R中的POST請求中設置content-type?

編輯:我會盡力解釋我需要在這裏做什麼。我有一個網址。我需要傳遞一些參數是這樣的

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

這是,如果你使用REST控制檯擴展在Chrome瀏覽器進行Web服務調用你鍵入的內容進行POST請求它。我需要通過設置內容類型,使這個來自R爲「text/plain的」

我已經試過是這樣,

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

這就像一個魅力的說,在我們的情況下,Web服務調用因爲調用所有的代理不需要content-type爲「text/plain」,也不需要傳遞任何參數(例如,沒有特定的代理名稱,因爲我想要所有的代理名稱)。我想我已經想出瞭如何通過給列表中的名稱值對傳遞一個參數給.opts。我無法弄清楚的是如何設置內容類型。

我都試過,但失敗了,

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

回答

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() 
+0

嘿謝謝你的答案。我很抱歉,但由於我的公司政策,我將無法分享我試圖打的實際代碼和網址。而隨着Web服務的暴露由其他團隊完成,我無法生成一個簡單的示例。我會嘗試你的答案並回復你。 – Avinash

+1

@Avinash那麼,你可以省略網址,我主要是你使用了哪些命令以及你想傳遞什麼參數。看到我的編輯,我忘了示例中的第一行。 – Thomas

+0

curlPerform試圖從它做出一個GET請求。我需要做一個POST請求。我會試着解釋我在這個問題上做了什麼。 – Avinash

相關問題