2011-02-07 8 views
9

Ho bisogno di prendere un dato dal servizio web XML-RPC.XmlSlurper.parse (uri) con autenticazione di base HTTP

new XmlSlurper().parse("http://host/service") funziona correttamente, ma ora ho un servizio particolare che richiede l'autenticazione HTTP di base.

Come posso impostare nome utente e password per il metodo parse() o modificare le intestazioni HTTP della richiesta?

L'utilizzo di http://username:[email protected]/service non aiuta - Ricevo ancora l'eccezione java.io.IOException: Server returned HTTP response code: 401 for URL.

Grazie

risposta

17

ho trovato this code over here che potrebbe aiutare?

modifica di questo codice alla vostra situazione, otteniamo:

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

Questo funziona per voi

Si prega di ricordarsi di utilizzare questo al posto del 'def authString' di cui sopra:

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

Ho definito i miei parametri come usr e pwd. Saluti! – Megha