有没有办法让 httr 忽略 url 中的百分比字符?或者不是百分比编码的东西?

Is there a way to get httr to ignore percent characters in the url? Or NOT percent-encode something?

我正在尝试使用 R 从 API 中获取一些数据。 API 的管理员构造它,使 UN 和 PW 成为 URL 字符串中参数的一部分。例如:

https://theSite.net/Something/SomethingWS.aspx?username=myUsername&password=myPassword&action=DoThisThing

如果我使用 RCurl 创建我的请求,这会很好地工作。但是,我正在尝试使用 httr(RCurl 的包装器),因为我希望能够测试获取数据时可能出现的任何错误。例如,像这样:

    resp <- GET(theURL)
    warn_for_status(resp)
    if (status_code(resp) == 200) { WE GOT GOOD STUFF }

所以要使用 httr,我会这样做:

theRequest <- GET(theURL, query = list(username = myUN, password = myPW, action = "DoThisThing"))

这中断了。我意识到我的密码中有一个 %2。 httr 尝试通过将 % 更改为 %25 来做正确的事情,因此我的密码现在在 %2 应该在的所有地方都有 %252,请求被拒绝。有没有办法告诉 httr 不要 'fix' 我的密码,或者我猜是百分比编码?

我试图在 "authenticate" 中使用我的凭据,但服务器也拒绝了:

theRequest <- GET(theURL, authenticate(myUN, myPW), query = list(action = "DoThisThing"))

我在 httr 文档中找到了 POST() 函数的一行,这让我找到了答案:

For "form", elements are coerced to strings and escaped, use I() to prevent double-escaping.

我把 PW 包在了 I 里,一切正常:

theRequest <- GET(theURL, query = list(username = myUN, password = I(myPW), action = "DoThisThing"))

我不知道这是应该如何完成的,还是某种变通方法,但它确实有效!

感谢观看!