JavaのHTTP通信のサンプルです。
Apache HttpComponentsのHttpClientを使用しています。
1.jarファイルの取得
Apacheのサイトで4.5.3.zip(HttpClient 4.5.3 (GA))をダウンロードします。
Apache HttpComponentsのサイト
http://hc.apache.org/
(左のDownloadのリンクをクリックします)
ダウンロードしたzipを展開し以下のファイルを任意の場所に配置します。
・httpclient-4.5.3.jar
・httpcore-4.4.6.jar
・commons-logging-1.2.jar
2.jarファイルをクラスパス(ビルドパス)に追加
httpclient-4.5.3.jarとhttpcore-4.4.6.jarとcommons-logging-1.2.jarをクラスパスに追加します。
クラスパスに追加する手順は、
Eclipse jarファイルをクラスパスに設定する方法参照。
3.ソースコードの作成(GET)
以下のコードを記述します。GETのサンプルです。
22行目のhttp://httpbin.org/は、通信系のテストができるサイトです。
http://httpbin.org/
package test1;
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 Sample {
void runSample() {
Charset charset = StandardCharsets.UTF_8;
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet request = new HttpGet("http://httpbin.org/get");
System.out.println
("requestの実行 「" + request.getRequestLine() + "」");
//requestの実行 「GET http://httpbin.org/get HTTP/1.1」
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){
String responseData =
EntityUtils.toString(response.getEntity(),charset);
System.out.println(responseData);
//取得したデータが表示される
}
} 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();
}
}
}
}
public class Test1 {
public static void main(String[] args) {
Sample s = new Sample();
s.runSample();
}
}
4.ソースコードの作成(POST)
POSTのサンプルです。
30行目のhttp://httpbin.org/は、通信系のテストができるサイトです。
http://httpbin.org/
package test1;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
/**
* HttpClientsのサンプル
*/
class Sample {
void runSample() {
Charset charset = StandardCharsets.UTF_8;
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpPost request = new HttpPost("http://httpbin.org/post");
List<NameValuePair> requestParams = new ArrayList<>();
requestParams.add(new BasicNameValuePair("user","taro"));
requestParams.add(new BasicNameValuePair("password","123"));
System.out.println
("requestの実行 「" + request.getRequestLine() + "」");
//requestの実行 「POST http://httpbin.org/post HTTP/1.1」
CloseableHttpResponse response = null;
try {
request.setEntity(new UrlEncodedFormEntity(requestParams));
response = httpclient.execute(request);
int status = response.getStatusLine().getStatusCode();
System.out.println("HTTPステータス:" + status);
//HTTPステータス:200
if (status == HttpStatus.SC_OK){
String responseData =
EntityUtils.toString(response.getEntity(),charset);
System.out.println(responseData);
//取得したデータが表示される
}
} 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();
}
}
}
}
public class Test1 {
public static void main(String[] args) {
Sample s = new Sample();
s.runSample();
}
}
関連の記事
Java HTTP通信のサンプル(HttpURLConnection)
Java ソケット通信のサンプル
Java JacksonでJSONとオブジェクトを変換