Apache AntGet
タスクを使用して、社内の別のチームによって生成されたWSDLのリストを取得しようとしていました。http://.... com:7925 /services/のweblogic9.xサーバーでホストされています。ブラウザからページにアクセスできますが、解析するローカルファイルにページをコピーしようとすると、getタスクでFileNotFoundExceptionが発生します。HTTP用の非標準ポート80がなくても(antタスクを使用して)URLを取得できました。
Antのソースコードを調べて、エラーをURLConnectionに絞り込みました。プロトコルがHTTPとして指定されていても、URLConnectionはデータが標準ポート上にないため、データがHTTPトラフィックであることを認識していないようです。WireSharkを使用してトラフィックをスニッフィングしたところ、ページはネットワーク全体で正しく読み込まれましたが、それでもFileNotFoundExceptionが発生します。
エラーが表示される例を次に示します(無実を保護するためにURLが変更されています)。エラーはconnection.getInputStream();でスローされます。
import java.io.File;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
public class TestGet {
private static URL source;
public static void main(String[] args) {
doGet();
}
public static void doGet() {
try {
source = new URL("http", "test.com", 7925,
"/services/index.html");
URLConnection connection = source.openConnection();
connection.connect();
InputStream is = connection.getInputStream();
} catch (Exception e) {
System.err.println(e.toString());
}
}
}