ウォンツテック

そでやまのーと

  • URLConnection HttpURLConnection


JavaではHttp通信をする時にsocket関連操作をカプセル化した
URLConnectionとHttpURLConnectionがあるので試しに使ってみた。

URLConnectionの場合

try {
    URL url = new URL(this.getCodeBase(), "../servlet/ServerApp");

    URLConnection conn = url.openConnection();

    conn.setUseCaches(false);
    conn.setRequestProperty("Content-Type",
                                "application/x-java-serialized-object");
    conn.connect();

    InputStream is = conn.getInputStream();
} catch (IOException e) {}

HttpURLConnectionの場合

try {
    URL url = new URL(this.getCodeBase(), "../servlet/ServerApp");

    HttpURLConnection conn = (HttpURLConnection)url.openConnection();

    conn.setUseCaches(false);
    conn.setRequestMethod("GET");
    conn.setRequestProperty("Content-Type",
                                "application/x-java-serialized-object");
    conn.connect();

    InputStream is = conn.getInputStream();
} catch (IOException e) {}

双方共にgetInputStream()が無いと実際GETが送られないのと、connectをしなくてもGETが送られる。
※getInputStream()内部でconnectの処理が行われているのだろうか?


  • Appletのセキュリティ

Applet側でServerSocketするプログラムを書いてたのだが、
何度やってもクライアント(Applet)側がSynの後にすぐ、RST-ACK
を返してるので始めパーソナルF/Wかと思ったが、Appletのセキュリティ上の問題だった。。(よく考えれば当たり前だorz)

  • 文字化け

文字化けが発生する場合は以下のコードを入れて文字コード
16進数ダンプを見てみる

char[] buf = str.toCharArray();
for (int i=0; i