トップ 言語 Java ライブラリ/Framework Apache Commons httpclient

Apache Commons httpclient―httpプロトコルのリクエストが簡単

ApacheのCommonsライブラリにあるhttpclientです。httpプロトコルのリクエストが簡単に行えます。

▲記事トップへ

目次

このページの目次です。

1. Apache Commons HttpClientでCookieの内容表示する方法

2. Apache Commons HttpClientとJEditorPaneを使用してWebページを表示

3. JavaでLet's EncryptなどのSSL証明書が認識されない場合の解決方法

もっと知識を広げるための参考

更新履歴

1. Apache Commons HttpClientでCookieの内容表示する方法

Apache Commons HttpClientでCookieの内容表示することができます。

2. サンプルコード1

Javaファイル

package com.zealseeds.sample;

import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;

public class CookieViewSample {

	public static void main(String args[]) {
		String url = "https://www.google.co.jp/";
		HttpClient client = new HttpClient();
		HttpMethod method = new GetMethod(url);
		method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
				new DefaultHttpMethodRetryHandler(3, false));

		try {
			client.executeMethod(method);
			Cookie[] cookies = client.getState().getCookies();

			for (Cookie cookie : cookies) {
				System.out.println(cookie.toString());
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

依存ファイル(pom.xml)

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

	<modelVersion>4.0.0</modelVersion>
	<groupId>com.zealseeds</groupId>
	<artifactId>App</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<dependencies>

		<dependency>
			<groupId>commons-httpclient</groupId>
			<artifactId>commons-httpclient</artifactId>
			<version>3.1</version>
		</dependency>

	</dependencies>
</project>

2. Apache Commons HttpClientとJEditorPaneを使用してWebページを表示

サンプルコード2

Javaファイル

package com.zealseeds.sample;

import java.io.IOException;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;

public class HTTPClientSample {
	private String HOME = "http://www.google.co.jp/";
	private JFrame frame = new JFrame();
	private JEditorPane editor = new JEditorPane();

	public static void main(String[] args) throws IOException {
		new HTTPClientSample();
	}

	public HTTPClientSample() throws IOException {

		editor.addHyperlinkListener(new HyperlinkListener() {

			public void hyperlinkUpdate(HyperlinkEvent e) {

				// Commons Httpclientで遷移してみる。
				try {
					String url = e.getURL().toString();
					HttpClient client = new HttpClient();
					HttpMethod method = new GetMethod(url);
					method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
							new DefaultHttpMethodRetryHandler(3, false));
					client.executeMethod(method);
					String result = "";
					result = method.getResponseBodyAsString();
					editor.setContentType("text/html");
					editor.setText(result);
					method.releaseConnection();

				} catch (Exception ex) {
					ex.printStackTrace();
				}
			}
		});
		frame.getContentPane().add(new JScrollPane(editor));
		frame.setSize(800, 600);
		frame.setVisible(true);

		// JEditorPaneで遷移してみる
		editor.setEditable(false);
		editor.setPage(HOME);
	}
}

依存ファイル(pom.xml)

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

	<modelVersion>4.0.0</modelVersion>
	<groupId>com.zealseeds</groupId>
	<artifactId>MailApp</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<dependencies>

		<dependency>
			<groupId>commons-httpclient</groupId>
			<artifactId>commons-httpclient</artifactId>
			<version>3.1</version>
		</dependency>

	</dependencies>
</project>

3. JavaでLet's EncryptなどのSSL証明書が認識されない場合の解決方法

JavaでLet's EncryptのSSL証明書が認識されない、 「PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target」というような例外が発生する場合の対処方法です。

原因

ご使用のJava(JRE)に信用できる証明書として認識されていないのが原因です。

解決方法

Let's Encryptなど一般的に使用されている証明書の場合はJavaのバージョンを上げることで解決できます。 しかし、自己証明書のように解決できないパターンがあるので、ここでは直接組み込む方法について解説します。

以下はLet's Encryptの例です。

letsencrypt設定サイトからchain.pemを取得する。

letsencryptを設定するとchain.pemが入手できます。

場所)/etc/letsencrypt/archive/<ドメイン名>/chain<数字>.pem

Javaにchain.pemを組み込む。

以下のようにkeytoolコマンドで組込みます。

keytool -trustcacerts -keystore <JAVA_HOME(JREルートパス例)/usr/java/XXX)>/lib/security/cacerts -storepass changeit -noprompt -importcert -file chain<数字>.pem

もっと知識を広げるための参考

更新履歴

戻る

スポンサーリンク

サイト内のページ

言語
C・C++ /HTML /Java /JavaScript /PHP /シェルスクリプト

開発環境
Ant /Burp /Eclipse /Fiddler /gcc /gdb /Git /g++ /JDK /JMeter /JUnit /Teraterm /ZAP

技術・仕様
Ajax /CORBA /Jakarta EE(旧称J2EE、Java EE) /JNI

ライブラリ/Framework/CMS
bootstrap /jQuery /FuelPHP /Lucene /MyBatis /Seasar2 /Spring /Struts /WordPress

Web API
Google Maps

ITインフラOSとミドルウェア
Linux /Windows /シェル
ActiveMQ /Tomcat /MariaDB /MySQL /Nagios /Redis /Solr

ITインフラサーバー
公開Webサーバー

ITインフラネットワーク
プログラミング /構築

ITインフラセキュリティ
公開サーバーのセキュリティ

PC製品
ZOTAC

SI
ホームページの作り方

その他
IT用語 /ITスキル体系

スポンサーリンク

関連サイト内検索ツール

zealseedsおよび関連サイト内のページが検索できます。

IPアドレス確認ツール

あなたのグローバルIPアドレスは以下です。

18.221.183.34

HTMLの表示色確認ツール

パスワード生成ツール

文字数のプルダウンを選択して、取得ボタンを押すと「a~z、A~Z、0~9」の文字を ランダムに組み合わせた文字列が表示されます。

ここに生成されます。

スポンサーリンク