我使用httr访问安全站点但是在第一次请求时我收到服务器错误

时间:2016-04-21 04:10:08

标签: r httr

正如标题所说,该网站是安全的,我无法分享我的凭据,但这里是事件的大纲。

网站安全的工作方式是您使用user / pass向一个网址发送POST,然后发回一个令牌。然后,所有请求都需要在其标头中携带该标记才能工作。我可以让它工作一次。在登录步骤后的第一个请求中,我得到了我想要的结果。所有后续请求都会导致http 500错误“内部服务器错误”#34;。当然,在一个完美的世界里,我可以去服务器并获取日志,以便更详细地了解正在发生的事情。但是,它们在我的星球上并不那么适应,所以我不得不挠头。

只是为了澄清我可以第二次发送完全相同的请求,我得到上述错误。到目前为止,我的工作是detach httr,然后重新library(httr)重新开始。对于这个问题,这似乎不是最佳方法。

我猜这个问题与httr如何重复使用相同的句柄有关,但我不知道这两个请求之间的信息有什么变化。

在伪代码中,我们说我做了

resp<-POST('https://my.site.com/login', add_headers(.headers=c('user'='me', 'pass'='blah'))
mytoken<-content(resp)$token
qry<-POST('https://my.site.com/soap/qry', add_headers(.headers=c('token'=mytoken)),body=myxmlstring)
#qry will have status 200 and the content I expect
#If I run the same POST command again
qry2<-POST('https://my.site.com/soap/qry', add_headers(.headers=c('token'=mytoken)),body=myxmlstring) 
#qry2 will be status code 500
#if I do
detach("package:httr", unload=TRUE)
library(httr)
#and then do the commands again from the top then it will work again.

理想情况下,我可以添加一个参数给POST,这将使每个POST完全独立于最后一个。除此之外,我对一些比分离和重新连接包本身更有意义的事情感到高兴。

0 个答案:

没有答案