2011-02-07 32 views
9

Tôi cần lấy dữ liệu từ dịch vụ web XML-RPC.XmlSlurper.parse (uri) với xác thực cơ sở HTTP

new XmlSlurper().parse("http://host/service") hoạt động tốt, nhưng bây giờ tôi có một dịch vụ cụ thể yêu cầu xác thực HTTP cơ bản.

Tôi làm cách nào để đặt tên người dùng và mật khẩu cho phương thức parse() hoặc sửa đổi tiêu đề HTTP của yêu cầu?

Sử dụng http://username:[email protected]/service không giúp ích - Tôi vẫn nhận được java.io.IOException: Server returned HTTP response code: 401 for URL ngoại lệ.

Cảm ơn

Trả lời

17

Tôi tìm thấy this code over here có thể giúp ích gì?

Chỉnh sửa mã này vào tình hình của bạn, chúng tôi nhận được:

def addr  = "http://host/service" 
def authString = "username:password".getBytes().encodeBase64().toString() 

def conn = addr.toURL().openConnection() 
conn.setRequestProperty("Authorization", "Basic ${authString}") 
if(conn.responseCode == 200) { 
    def feed = new XmlSlurper().parseText(conn.content.text) 

    // Work with the xml document 

} else { 
    println "Something bad happened." 
    println "${conn.responseCode}: ${conn.responseMessage}" 
} 
2

này sẽ làm việc cho bạn

Hãy nhớ sử dụng điều này thay vì 'def authString' đề cập ở trên:

def authString = "${usr}:${pwd}".getBytes().encodeBase64().toString() 
+0

Tôi đã xác định tham số của mình là usr và pwd. Chúc mừng! – Megha

Các vấn đề liên quan