API sunucusuna HTTP (S) istekleri yapmak için RCurl paketini kullanarak bir R sarıcısını yaklaşık PiCloud's REST API uygulıyorum. API, kullanıcıların yeterli izinlere sahip olduğunu doğrulamak için Temel HTTP kimlik doğrulamasını kullanır. PiCloud belgeleri, api'yi kullanma ve kimlik doğrulaması için bir örnek verir: Bu, mükemmel çalışır. Aşağıdaki hata iletisini bu işlevi yürütmeRCurl: HTTP WWW-Kimlik Doğrulaması Olmadan HTTP 401 Koduna Yanıt Verildiğinde HTTP Kimlik Doğrulaması
getURL("https://api.picloud.com/job/?jids=12", userpwd="key:secret")
: eşdeğer RCurl emri bu çevirme
[1] "{\"error\": {\"msg\": \"No HTTP Authorization information present\", \"code\": 995, \"retry\": false}}"
konuyu daha derinlemesine keşfetmek ben bukle komutu tarafından yapılan HTTP istekleri dahil olduğu tespit İlk GET komutunda Yetkilendirme alanı.
RCurl bunu yapmaz. Bunun yerine önce yetki alanı ayarlanmadan bir GET isteği gönderir. 401 hata kodu VE WWW-Authenticate alanıyla bir cevap alırsa Yetkilendirme alanına başka bir GET isteği gönderir.
HTTP Spec WWW-Authenticate alan PiCloud API mesajları yok içerecek bir 401 hata kodu ile dönmek iletileri gerektirir rağmen. Böylelikle, userpwd set set RCurl ile bile getURL
çağırıldığında, yetki alanı ayarlanmış bir GET isteği gönderilmez. Sonuç olarak kimlik doğrulaması her zaman başarısız olur.
gönderir ilk GET mesajında Yetkilendirme alanını ayarlamak için RCurl zorlamak için herhangi bir yolu var mı? Kullanmayabileceğim başka R paketleri yok mu?
. Teşekkürler! –
yeniden kullanılabilir bukle sapı geçen varsa, getCurlHandle 'çağrınızda()' in 'httpauth = 1' belirlemek zorunda. (PostForm() 'ı temel auth ile çalışmak için kullanabilmemin tek yolu buydu:' httpauth 'parametresini postForm() 'a çevirmek için bir parametre olarak kullanmak işe yaramadı. –