【发布时间】:2014-09-09 03:34:36
【问题描述】:
我正在使用 {httr} 包登录到内部 Web 应用程序(IIS7.5 上的 Theradoc),以便抓取一些 html(感染)数据。
library(httr)
POST("http://ahdc372n2", authenticate("foo", "bar"), encode="multipart"), verbose())
详细的控制台输出显示,
-> POST /theradoc/login/index.cfm HTTP/1.1
-> Authorization: Basic Y2xpbmludGVsbDowMWRFbmdsaXNo
-> User-Agent: curl/7.19.6 Rcurl/1.95.4.3 httr/0.4
-> Host: ahdc372n2.phs-sfalls.amck.net
-> Accept: */*
-> Accept-Encoding: gzip
-> Cookie: JSESSIONID=843052421c871dec2ac3a263b136d475a4a6
->
<- HTTP/1.1 411 Length Required
<- Content-Type: text/html; charset=us-ascii
<- Server: Microsoft-HTTPAPI/2.0
<- Date: Mon, 08 Sep 2014 15:53:02 GMT
<- Connection: close
<- Content-Length: 344
<-
* Closing connection #0
最终我得到一个 ">HTTP Error 411。请求必须被分块或具有内容长度。"
我已经查看了这个older post 没有有用的指针。
有没有办法在 httr POST 请求中强制使用 Content-Length?
【问题讨论】:
-
使用
ls("package:httr", pattern = "content")可以看到httr中内容相关的功能。我在帮助页面中看不到任何关于强制内容长度的内容,但它们可能对您有所帮助。 -
谢谢里奇。我想我应该尝试使用包 RCurl。我想你可能已经回答了这个问题......如果你想把它作为答案,我会接受它。不要以为您可以给我等效的 RCurl 作为答案的一部分(我只是懒惰:)?
-
您是否也可以在 Chrome 中执行此请求,或者在请求有效时可以看到所有标头的地方执行此请求?我想知道您是否需要在接受标头中添加其他内容。我希望有办法重现环境以测试正在发生的事情。
-
您真的没有在您的发布请求中发布任何数据吗?
-
你用
httr0.5试过了吗? (最近发布)
标签: r post iis-7.5 httr http-status-code-411