12

XML-RPC Web サービスからデータを取得する必要があります。

new XmlSlurper().parse("http://host/service")正常に動作しますが、現在、基本的な HTTP 認証を必要とする特定のサービスがあります。

メソッドのユーザー名とパスワードを設定しparse()たり、リクエストの HTTP ヘッダーを変更したりするにはどうすればよいですか?

使用http://username:password@host/serviceしても役に立ちません - それでもjava.io.IOException: Server returned HTTP response code: 401 for URL例外が発生します。

ありがとう

4

2 に答える 2

22

ここでこのコードを見つけましたが、これは役に立ちますか?

このコードを状況に合わせて編集すると、次のようになります。

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}" 
}
于 2011-02-08T07:56:21.013 に答える
3

これはあなたのために働くでしょう

上記の「def authString」の代わりにこれを使用することを忘れないでください:

def authString  = "${usr}:${pwd}".getBytes().encodeBase64().toString()
于 2012-06-06T12:31:24.633 に答える