次のページを参考にしました。
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"
}