LoginSignup
8

More than 1 year has passed since last update.

Java の HttpClient の使い方 (Get)

Last updated at Posted at 2018-02-27

次のページを参考にしました。
Java HTTP通信のサンプル(HttpClient)

Ubuntu 21.04 で確認しました。

Http_get.java
// -----------------------------------------------------------------------
/*
    Http_get.java

                Jul/30/2020
*/
// -----------------------------------------------------------------------
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

/**
 * HttpClientsのサンプル
 */
class Uri_get
{
    static String uri_get_proc(String uri)
        {
        String res = "";
        Charset charset = StandardCharsets.UTF_8;

        CloseableHttpClient httpclient = HttpClients.createDefault();
        HttpGet request = new HttpGet(uri);

        System.out.println
            ("requestの実行 「" + request.getRequestLine() + "」");

        CloseableHttpResponse response = null;

        try {
            response = httpclient.execute(request);

            int status = response.getStatusLine().getStatusCode();
            System.out.println("HTTPステータス:" + status);
            //HTTPステータス:200

            if (status == HttpStatus.SC_OK){                
                res = EntityUtils.toString(response.getEntity(),charset);               
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (response != null) {
                    response.close();
                }
                if (httpclient != null) {
                    httpclient.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        return res;
    }
}

// -----------------------------------------------------------------------
public class Http_get
{
    public static void main(String[] args)
    {
        String uri = "https://httpbin.org/get";

        String res = Uri_get.uri_get_proc(uri);
        System.out.println(res);
    }
}

// -----------------------------------------------------------------------
Makefile
LIB=/usr/share/java
HTTPCLIENT_JAR=.:$(LIB)/httpclient-4.5.13.jar:$(LIB)/httpcore-4.4.14.jar
Http_get.class: Http_get.java
    javac -cp $(HTTPCLIENT_JAR) Http_get.java
clean:
    rm -f *.class

実行コマンド

LIB=/usr/share/java
HTTPCLIENT_JAR=.:$LIB/httpclient-4.5.13.jar:$LIB/httpcore-4.4.14.jar:$LIB/commons-logging-1.2.jar
#
java -cp $HTTPCLIENT_JAR Http_get

実行結果

requestの実行 「GET https://httpbin.org/get HTTP/1.1」
HTTPステータス:200
{
  "args": {}, 
  "headers": {
    "Accept-Encoding": "gzip,deflate", 
    "Host": "httpbin.org", 
    "User-Agent": "Apache-HttpClient/4.5.13 (Java/11.0.11)", 
    "X-Amzn-Trace-Id": "Root=1-5f226ffa-accebcf2bde7af40b3507628"
  }, 
  "origin": "219.126.139.62", 
  "url": "https://httpbin.org/get"
}

同じことを curl で実行すると

$ curl https://httpbin.org/get
{
  "args": {}, 
  "headers": {
    "Accept": "*/*", 
    "Host": "httpbin.org", 
    "User-Agent": "curl/7.68.0", 
    "X-Amzn-Trace-Id": "Root=1-5f227030-f41530438d1cfcefe66f5c05"
  }, 
  "origin": "219.126.139.62", 
  "url": "https://httpbin.org/get"
}

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
8