有没有办法让httr忽略网址中的百分比字符?或者不进行百分比编码?

时间:2016-02-12 17:09:58

标签: r rcurl httr

我正在尝试使用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来做正确的事情,所以我的密码现在有%252应该是%252,并且请求被拒绝。有没有办法告诉httr不要修复&#39;我的密码,或百分比编码,我猜?

我尝试在&#34;身份验证&#34;中使用我的凭据,但服务器也拒绝了:

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

1 个答案:

答案 0 :(得分:0)

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

  

对于&#34; form&#34;,元素被强制转换为字符串并转义,使用I()来   防止双重逃避。

我把PW包裹在里面,一切运转良好:

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

我不知道这是支持完成的方式,还是各种各样的解决方法,但它确实有效!

感谢您的期待!