2016-02-12 27 views
0

我想用R從API獲取一些數據。 API的管理員已經構建它,以便UN和PW是URL字符串中參數的一部分。例如:有沒有辦法讓httr忽略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不要'修復'我的密碼,或百分比編碼我猜?

我試圖用我的憑據「認證」,但服務器拒絕了太:

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

回答

0

我發現了POST()函數HTTR文檔在一條線上,這指出了我對答案:

對於「form」,元素被強制轉義爲字符串並轉義,使用I()來防止雙轉義。

我包的PW在我,一切運行良好:

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

我不知道這是它應該是怎樣做的,或變通各種各樣的,但它的工作原理!

感謝您的期待!