我正在尝试使用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"))
答案 0 :(得分:0)
我在httr文档中找到了POST()函数的一行,它指出了我的答案:
对于&#34; form&#34;,元素被强制转换为字符串并转义,使用I()来 防止双重逃避。
我把PW包裹在里面,一切运转良好:
theRequest <- GET(theURL, query = list(username = myUN, password = I(myPW), action = "DoThisThing"))
我不知道这是支持完成的方式,还是各种各样的解决方法,但它确实有效!
感谢您的期待!