Apache XML-RPC + BASIC認証 + SSL

XML-RPCBASIC認証SSLを経由して利用する。
言語はJavaXML-RPCApacheのライブラリ(v2.0)を使う。

public class XmpRpcTest {
  public static void main(String[] args) {
    try {
      Vector params = new Vector ();
      params.addElement ("test_para");
      URL url = new URL("https://ssl.host/xmprpc");
      XmlRpcTransportFactory tf = new SunSSLTransportFactory(new Properties());
      tf.setProperty(XmlRpcTransportFactory.TRANSPORT_AUTH, HttpUtil.encodeBasicAuthentication("id", "password"));
      tf.setProperty(XmlRpcTransportFactory.TRANSPORT_URL, url);
      XmlRpcClient xmlrpc = new XmlRpcClient (url, tf);
      Hashtable result = (Hashtable)xmlrpc.execute("test.get_ID", params);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

こんなコードを書いたんだが,サーバにコネクトできずタイムアウトで落ちてしまう。うーん。どこかに参考になるドキュメントは無いものかー。

【追記】
アホなことにアクセス先がプロキシー必須のサーバであることを見逃していた。Javaからプロキシー経由でネットワークにアクセスするには,以下のような信じられないコードを書く必要がある。

System.setProperty( "proxySet", "true" );
System.setProperty( "http.proxyHost", "プロキシーのホスト名" );
System.setProperty( "http.proxyPort", "なんか数字" ); 

ロキシーのクラスがあるわけでもなく,ネットワーク関連のクラスのメソッドでsetProxyHostとかになっているわけでもない。なぜかいきなりシステムプロパティ。どういう実装じゃ。
しかも今回はこれだけでは動かなかった。httpsのプロキシーは別に指定する必要があるのだ!

System.setProperty( "https.proxyHost", "https用プロキシーのホスト名" );
System.setProperty( "https.proxyPort", "なんか数字" ); 

ふう。