2014-09-02 76 views
1

我試圖使用ntlm身份驗證來使用Web服務。下面的代碼工作在Ruby中JRuby Savon Ntlm身份驗證(在Ruby中運行,但在JRuby中失敗)

 client = Savon.client(wsdl:"http://xxxxxxx/xxxxxxx/xxxxxx.asmx?WSDL",ntlm: ["user", "pass"]) 
     response = client.call(:does_entry_id_exist, message: { 
            :server =>'xxxxxx', 
            :entryID =>'xxxxxx' 
            }).to_s 

但是當我嘗試在JRuby中執行它,它給了我一個驗證錯誤

Install the httpi-ntlm gem for experimental NTLM support 

我已經安裝了寶石,並已列入我的代碼相同,但它仍然炸彈出來。任何人都可以請幫忙。

+0

我安裝「httpi-NTLM '寶石,並刪除'httpi'寶石,並得到它的工作。但是現在我遇到了一個SOAP 401錯誤。 – user1766815 2014-09-02 16:31:30

回答

0

我們有類似的問題,不幸的是我被JRuby 1.6.8卡住了。 我們不得不放棄薩翁及用途: 驃-NTLM HTTP的寶石與httpi-NTLM,最終得到NTLM身份驗證的工作:

https://rubygems.org/gems/pyu-ntlm-http

http://rubydoc.info/gems/pyu-ntlm-http/0.1.3.1/frames

request = HTTPI::Request.new 
request.url = "http://WebserviceURL" 
request.auth.ntlm "username","password" 
request.headers["Content-Type"] = "text/xml; charset=UTF-8" 
request.headers["SOAPAction"] = "action" 
request.body = formatted_soap_body 
response = HTTPI.post(request)