requestURL.json
{
"AService": "https://postman-echo.com/post",
"BService": "https://postman-echo.com/get",
"CService": "https://postman-echo.com/put"
}
requestHeader.json
{
"client-id": "id-hoge",
"Authorization": "auth-info",
"client-secret": "secret-hoge"
}
requestBody.json
{
"apiVer": "10.0",
"list":[
{
"name": "hoge",
"url": "http://hoge.com"
},
{
"name": "fuga",
"url": "http://fuga.com"
}
]
}
Main.java
package org.example;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.util.Map;
public class Main {
public static void main(String[] args) {
try {
// JSONファイルをJavaオブジェクトにマッピングするためのObjectMapperインスタンスを生成
ObjectMapper objectMapper = new ObjectMapper();
// ローカル内のreqesutHeader.jsonを取得
Map<String, Object> requestHeader = objectMapper.readValue(new File("./src/requestHeader.json"), Map.class);
// ローカル内のreqesutBody.jsonを取得
Map<String, Object> requestBody = objectMapper.readValue(new File("./src/requestBody.json"), Map.class);
// Aサービスを呼び出す。POST
String Aresponse = Util.AService(requestHeader, requestBody);
System.out.println("Aサービスのレスポンスbody:" + Aresponse);
// Bサービスを呼び出す。GET
String Bresponse = Util.BService(requestHeader, "AA100", "010011110");
System.out.println("Bサービスのレスポンスbody:" + Bresponse);
// Cサービスを呼び出す。PUT
String Cresponse = Util.CService(requestHeader, requestBody);
System.out.println("Cサービスのレスポンスbody:" + Cresponse);
} catch (Exception e) {
e.printStackTrace();
}
}
}
util.java
package org.example;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.core.type.TypeReference;
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Map;
public class Util {
private static final ObjectMapper objectMapper = new ObjectMapper();
private static final String REQUEST_URL_FILE_PATH = "./src/requestURL.json";
/**
* Aサービスの実行を行います。HTTP POSTリクエストを使用して処理を実行します。
*
* @param headerJSON ヘッダー情報を含むMapオブジェクト
* @param bodyJSON ボディ情報を含むMapオブジェクト
* @return サービスからのレスポンス文字列。
* @throws Exception 例外が発生した場合にスローされます。
*/
public static String AService(Map<String, Object> headerJSON, Map<String, Object> bodyJSON) throws Exception {
// requestURL.jsonからAServiceのURLを取得
Map<String, String> urlMap = objectMapper.readValue(new File(REQUEST_URL_FILE_PATH), new TypeReference<Map<String, String>>() {
});
String requestURL = urlMap.get("AService");
// HTTP POSTリクエストを実行
return HTTPRequestPOST(headerJSON, bodyJSON, requestURL);
}
/**
* Bサービスの実行を行います。HTTP GETリクエストを使用して処理を実行します。
*
* @param headerJSON ヘッダー情報を含むMapオブジェクト
* @param id URLパラメータとして送信するID。
* @param key URLパラメータとして送信するキー。
* @return サービスからのレスポンス文字列。
* @throws Exception 通信エラーまたはファイル操作エラーが発生した場合。
*/
public static String BService(Map<String, Object> headerJSON, String id, String key) throws Exception {
// requestURL.jsonからBServiceのURLを取得
Map<String, String> urlMap = objectMapper.readValue(new File(REQUEST_URL_FILE_PATH), new TypeReference<Map<String, String>>() {
});
String requestURL = urlMap.get("BService");
requestURL += "?id=" + URLEncoder.encode(id, "UTF-8") + "&key=" + URLEncoder.encode(key, "UTF-8");
return HTTPRequestGET(headerJSON, requestURL);
}
/**
* Cサービスの実行を行います。HTTP PUTリクエストを使用して処理を実行します。
*
* @param headerJSON ヘッダー情報を含むMapオブジェクト
* @param bodyJSON ボディ情報を含むMapオブジェクト
* @return サービスからのレスポンス文字列。
* @throws Exception 例外が発生した場合にスローされます。
*/
public static String CService(Map<String, Object> headerJSON, Map<String, Object> bodyJSON) throws Exception {
// requestURL.jsonからCServiceのURLを取得
Map<String, String> urlMap = objectMapper.readValue(new File(REQUEST_URL_FILE_PATH), new TypeReference<Map<String, String>>() {
});
String requestURL = urlMap.get("CService");
// HTTP POSTリクエストを実行
return HTTPRequestPUT(headerJSON, bodyJSON, requestURL);
}
/**
* HTTP POSTリクエストを実行します。
*
* @param headerJSON ヘッダー情報を含むMapオブジェクト。
* @param bodyJSON ボディ情報を含むMapオブジェクト
* @param requestURL リクエストを送信するURL
* @return String型のレスポンスデータ
* @throws Exception 例外が発生した場合にスローされます。
*/
private static String HTTPRequestPOST(Map<String, Object> headerJSON, Map<String, Object> bodyJSON, String requestURL) throws Exception {
URL url = new URL(requestURL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
System.out.println("リクエストMethod : " + connection.getRequestMethod());
connection.setDoInput(true);
connection.setDoOutput(true);
//リクエスト形式をJsonに指定
connection.setRequestProperty("Content-Type", "application/json; charset=utf-8");
// ヘッダーのセット
for (Map.Entry<String, Object> entry : headerJSON.entrySet()) {
System.out.println(" " + entry.getKey() + ": " + entry.getValue());
connection.setRequestProperty(entry.getKey(), entry.getValue().toString());
}
// ボディのセット
try (OutputStream os = connection.getOutputStream()) {
objectMapper.writeValue(os, bodyJSON);
}
//正常終了時はHttpStatusCode 200が返ってくる
if (connection.getResponseCode() != 200) {
//エラー処理
System.out.println("HTTP POSTリクエストエラー : " + connection.getResponseCode());
}
//正常終了時はHttpStatusCode 200が返ってくる
System.out.println("HTTP POSTステータス: " + connection.getResponseCode());
// レスポンスの取得
StringBuilder response = new StringBuilder();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
}
return response.toString();
}
/**
* 指定されたURLにHTTP GETリクエストを送信します。
*
* @param headerJSON ヘッダー情報を含むMapオブジェクト。
* @param requestURL リクエストを送信するURL。
* @return String型のレスポンスデータ
* @throws Exception 通信エラーが発生した場合。
*/
public static String HTTPRequestGET(Map<String, Object> headerJSON, String requestURL) throws Exception {
URL url = new URL(requestURL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
System.out.println("リクエストMethod : " + connection.getRequestMethod());
// ヘッダーのセット
for (Map.Entry<String, Object> entry : headerJSON.entrySet()) {
System.out.println(" " + entry.getKey() + ": " + entry.getValue());
connection.setRequestProperty(entry.getKey(), entry.getValue().toString());
}
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
connection.disconnect();
return response.toString();
}
/**
* HTTP PUTリクエストを実行します。
*
* @param headerJSON ヘッダー情報を含むMapオブジェクト
* @param bodyJSON ボディ情報を含むMapオブジェクト
* @param requestURL リクエストを送信するURL
* @return String型のレスポンスデータ
* @throws Exception 例外が発生した場合にスローされます。
*/
private static String HTTPRequestPUT(Map<String, Object> headerJSON, Map<String, Object> bodyJSON, String requestURL) throws Exception {
URL url = new URL(requestURL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("PUT");
System.out.println("リクエストMethod : " + connection.getRequestMethod());
connection.setDoInput(true);
connection.setDoOutput(true);
//リクエスト形式をJsonに指定
connection.setRequestProperty("Content-Type", "application/json; charset=utf-8");
// ヘッダーのセット
for (Map.Entry<String, Object> entry : headerJSON.entrySet()) {
System.out.println(" " + entry.getKey() + ": " + entry.getValue());
connection.setRequestProperty(entry.getKey(), entry.getValue().toString());
}
// ボディのセット
try (OutputStream os = connection.getOutputStream()) {
objectMapper.writeValue(os, bodyJSON);
}
//正常終了時はHttpStatusCode 200が返ってくる
if (connection.getResponseCode() != 200) {
//エラー処理
System.out.println("HTTP POSTリクエストエラー : " + connection.getResponseCode());
}
//正常終了時はHttpStatusCode 200が返ってくる
System.out.println("HTTP POSTステータス: " + connection.getResponseCode());
// レスポンスの取得
StringBuilder response = new StringBuilder();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
}
return response.toString();
}
}