[JAVA](Swing)入力を受けてHTTPリクエスト(GET、POST)を送信
受信文字列入力 Meven+Jackson(IntelliJ) を追加 HTTPリクエスト
1.文字列入力の受信
Java Swingを使用して文字列を受信し、HTTPリクエストを送信する方法について説明します。
1.文字列入力の受信
300*150サイズのフレームを作成し、JTextFieldとJButtonを追加しました.
ボタンをクリックして入力を出力するように作成されました.
JTextFieldに「test」と入力します.
「転送」(Transfer)ボタンを押すと、サイレント出力ができます.
コード#コード#
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class SwingHttpRequest extends JFrame {
JTextField textField = new JTextField(20);
JButton button = new JButton("전송");
public static void main(String[] args) {
SwingHttpRequest swingHttpRequest = new SwingHttpRequest();
swingHttpRequest.sendText();
}
public void sendText() {
add(textField);
add(button);
setVisible(true);
setLayout(new FlowLayout());
setSize(300, 150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button.addActionListener(new ActionListener() { // 익명 객체
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(textField.getText());
}
});
}
}
2.Mavenの追加+Jacksonの追加(IntelliJ)
JSONリクエストの送信に必要なJackson依存性を追加するためにMavenが追加されました.
(1) Add Framework Support... > Mavenを追加します。
(2)生成したpom.xmlファイルに次のコードを追加します。
<dependencies>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.2</version>
</dependency>
</dependencies>
適用後pom。xml画像
3.HTTPリクエスト
HTTPリクエストをHttpURLLConnectionで送信.
リクエストの送信
サーバ出力(Spring Boot)
*ハングルと特殊文字&スペースは転送できません。さらなる処理が必要です。
GETリクエスト
HttpURLConnection connection = null;
.
. 중략
.
// GET
public String sendHttpGetRequest(String targetURL, String jsonValues) throws IOException {
//Create connection
URL url = new URL(targetURL + jsonToQueryString(jsonValues));
// Send request
URLConnection connection = null;
connection = url.openConnection();
connection.setRequestProperty("Accept-Charset", "URF-8");
// Get response
InputStream response = connection.getInputStream();
try (Scanner scanner = new Scanner(response)) {
String responseBody = scanner.useDelimiter("\\A").next();
return responseBody;
}
}
// json(String) => queryString
public String jsonToQueryString(String jsonValues) throws JsonProcessingException {
String queryString = "";
HashMap<String,Object> jsonMap = null;
jsonMap = new ObjectMapper().readValue(jsonValues, HashMap.class);
for(String strKey : jsonMap.keySet()) {
queryString += "?" + strKey + "=" + jsonMap.get(strKey);
}
return queryString;
}
POSTリクエスト
HttpURLConnection connection = null;
.
. 중략
.
// POST
public String sendHttpPostRequest(String targetURL, String jsonValues) {
try {
// Create connection
URL url = new URL(targetURL);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json; utf-8");
connection.setRequestProperty("Content-Length", Integer.toString(jsonValues.getBytes().length));
connection.setRequestProperty("Content-Language", "en-US");
connection.setUseCaches(false);
connection.setDoOutput(true);
// Send request
DataOutputStream wr = new DataOutputStream (connection.getOutputStream());
wr.writeBytes(jsonValues);
wr.flush();
wr.close();
// Get Response
InputStream is = connection.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
StringBuilder response = new StringBuilder(); // or StringBuffer if Java version 5+
String line;
while ((line = rd.readLine()) != null) {
response.append(line);
response.append('\r');
}
rd.close();
return response.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if (connection != null) {
connection.disconnect();
}
}
}
完全なコード
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class SwingHttpRequest extends JFrame {
static HttpURLConnection connection = null;
public static void main(String[] args) throws IOException {
SwingHttpRequest swingHttpRequest = new SwingHttpRequest();
swingHttpRequest.sendText(swingHttpRequest);
}
public void sendText(SwingHttpRequest swingHttpRequest) {
JTextField textField = new JTextField(20);
JButton button = new JButton("GET, POST 요청");
add(textField);
add(button);
setVisible(true);
setLayout(new FlowLayout());
setSize(300, 150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button.addActionListener(new ActionListener() { // 익명 객체
@Override
public void actionPerformed(ActionEvent e) {
Map<String, String> mapValues = new HashMap<>();
mapValues.put("value", textField.getText());
try {
String jsonValues = new ObjectMapper().writeValueAsString(mapValues);
String getUrl = "http://localhost:8080/get";
String postUrl = "http://localhost:8080/post";
// GET 요청
String getResponse = swingHttpRequest.sendHttpGetRequest(getUrl, jsonValues);
System.out.println("getResponse : " + getResponse);
// POST 요청
String postResponse = swingHttpRequest.sendHttpPostRequest(postUrl, jsonValues);
System.out.println("postResponse : " + postResponse);
} catch (IOException ex) {
ex.printStackTrace();
}
}
});
}
// POST
public String sendHttpPostRequest(String targetURL, String jsonValues) {
try {
// Create connection
URL url = new URL(targetURL);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json; utf-8");
connection.setRequestProperty("Content-Length", Integer.toString(jsonValues.getBytes().length));
connection.setRequestProperty("Content-Language", "en-US");
connection.setUseCaches(false);
connection.setDoOutput(true);
// Send request
DataOutputStream wr = new DataOutputStream (connection.getOutputStream());
wr.writeBytes(jsonValues);
wr.flush();
wr.close();
// Get Response
InputStream is = connection.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
StringBuilder response = new StringBuilder(); // or StringBuffer if Java version 5+
String line;
while ((line = rd.readLine()) != null) {
response.append(line);
response.append('\r');
}
rd.close();
return response.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if (connection != null) {
connection.disconnect();
}
}
}
// GET
public String sendHttpGetRequest(String targetURL, String jsonValues) throws IOException {
//Create connection
URL url = new URL(targetURL + jsonToQueryString(jsonValues));
// Send request
URLConnection connection = null;
connection = url.openConnection();
connection.setRequestProperty("Accept-Charset", "URF-8");
// Get response
InputStream response = connection.getInputStream();
try (Scanner scanner = new Scanner(response)) {
String responseBody = scanner.useDelimiter("\\A").next();
return responseBody;
}
}
// json(String) => queryString
public String jsonToQueryString(String jsonValues) throws JsonProcessingException {
String queryString = "";
HashMap<String,Object> jsonMap = null;
jsonMap = new ObjectMapper().readValue(jsonValues, HashMap.class);
for(String strKey : jsonMap.keySet()) {
queryString += "?" + strKey + "=" + jsonMap.get(strKey);
}
return queryString;
}
}
サーバコード(TestControl)
import com.testserver.ValueVo;
import org.springframework.web.bind.annotation.*;
@RestController
public class TestController {
@GetMapping("/get")
public String getTest(@RequestParam String value) {
System.out.println("get : " + value);
return value;
}
@PostMapping("/post")
public String postTest(@RequestBody ValueVo valueVo) {
String value = valueVo.getValue();
System.out.println("post : " + value);
return value;
}
}
サーバコード(Value VO)
import lombok.Data;
@Data
public class ValueVo {
private String value;
}
コメントリンク
https://stackoverflow.com/questions/1359689/how-to-send-http-request-in-java
https://stackoverflow.com/questions/2793150/how-to-use-java-net-urlconnection-to-fire-and-handle-http-requests
Reference
この問題について([JAVA](Swing)入力を受けてHTTPリクエスト(GET、POST)を送信), 我々は、より多くの情報をここで見つけました
https://velog.io/@kkj53051000/JAVASwing-입력-받고-HTTP-요청-보내기-GET-POST
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class SwingHttpRequest extends JFrame {
JTextField textField = new JTextField(20);
JButton button = new JButton("전송");
public static void main(String[] args) {
SwingHttpRequest swingHttpRequest = new SwingHttpRequest();
swingHttpRequest.sendText();
}
public void sendText() {
add(textField);
add(button);
setVisible(true);
setLayout(new FlowLayout());
setSize(300, 150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button.addActionListener(new ActionListener() { // 익명 객체
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(textField.getText());
}
});
}
}
JSONリクエストの送信に必要なJackson依存性を追加するためにMavenが追加されました.
(1) Add Framework Support... > Mavenを追加します。
(2)生成したpom.xmlファイルに次のコードを追加します。
<dependencies>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.2</version>
</dependency>
</dependencies>
適用後pom。xml画像
3.HTTPリクエスト
HTTPリクエストをHttpURLLConnectionで送信.
リクエストの送信
サーバ出力(Spring Boot)
*ハングルと特殊文字&スペースは転送できません。さらなる処理が必要です。
GETリクエスト
HttpURLConnection connection = null;
.
. 중략
.
// GET
public String sendHttpGetRequest(String targetURL, String jsonValues) throws IOException {
//Create connection
URL url = new URL(targetURL + jsonToQueryString(jsonValues));
// Send request
URLConnection connection = null;
connection = url.openConnection();
connection.setRequestProperty("Accept-Charset", "URF-8");
// Get response
InputStream response = connection.getInputStream();
try (Scanner scanner = new Scanner(response)) {
String responseBody = scanner.useDelimiter("\\A").next();
return responseBody;
}
}
// json(String) => queryString
public String jsonToQueryString(String jsonValues) throws JsonProcessingException {
String queryString = "";
HashMap<String,Object> jsonMap = null;
jsonMap = new ObjectMapper().readValue(jsonValues, HashMap.class);
for(String strKey : jsonMap.keySet()) {
queryString += "?" + strKey + "=" + jsonMap.get(strKey);
}
return queryString;
}
POSTリクエスト
HttpURLConnection connection = null;
.
. 중략
.
// POST
public String sendHttpPostRequest(String targetURL, String jsonValues) {
try {
// Create connection
URL url = new URL(targetURL);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json; utf-8");
connection.setRequestProperty("Content-Length", Integer.toString(jsonValues.getBytes().length));
connection.setRequestProperty("Content-Language", "en-US");
connection.setUseCaches(false);
connection.setDoOutput(true);
// Send request
DataOutputStream wr = new DataOutputStream (connection.getOutputStream());
wr.writeBytes(jsonValues);
wr.flush();
wr.close();
// Get Response
InputStream is = connection.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
StringBuilder response = new StringBuilder(); // or StringBuffer if Java version 5+
String line;
while ((line = rd.readLine()) != null) {
response.append(line);
response.append('\r');
}
rd.close();
return response.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if (connection != null) {
connection.disconnect();
}
}
}
完全なコード
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class SwingHttpRequest extends JFrame {
static HttpURLConnection connection = null;
public static void main(String[] args) throws IOException {
SwingHttpRequest swingHttpRequest = new SwingHttpRequest();
swingHttpRequest.sendText(swingHttpRequest);
}
public void sendText(SwingHttpRequest swingHttpRequest) {
JTextField textField = new JTextField(20);
JButton button = new JButton("GET, POST 요청");
add(textField);
add(button);
setVisible(true);
setLayout(new FlowLayout());
setSize(300, 150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button.addActionListener(new ActionListener() { // 익명 객체
@Override
public void actionPerformed(ActionEvent e) {
Map<String, String> mapValues = new HashMap<>();
mapValues.put("value", textField.getText());
try {
String jsonValues = new ObjectMapper().writeValueAsString(mapValues);
String getUrl = "http://localhost:8080/get";
String postUrl = "http://localhost:8080/post";
// GET 요청
String getResponse = swingHttpRequest.sendHttpGetRequest(getUrl, jsonValues);
System.out.println("getResponse : " + getResponse);
// POST 요청
String postResponse = swingHttpRequest.sendHttpPostRequest(postUrl, jsonValues);
System.out.println("postResponse : " + postResponse);
} catch (IOException ex) {
ex.printStackTrace();
}
}
});
}
// POST
public String sendHttpPostRequest(String targetURL, String jsonValues) {
try {
// Create connection
URL url = new URL(targetURL);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json; utf-8");
connection.setRequestProperty("Content-Length", Integer.toString(jsonValues.getBytes().length));
connection.setRequestProperty("Content-Language", "en-US");
connection.setUseCaches(false);
connection.setDoOutput(true);
// Send request
DataOutputStream wr = new DataOutputStream (connection.getOutputStream());
wr.writeBytes(jsonValues);
wr.flush();
wr.close();
// Get Response
InputStream is = connection.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
StringBuilder response = new StringBuilder(); // or StringBuffer if Java version 5+
String line;
while ((line = rd.readLine()) != null) {
response.append(line);
response.append('\r');
}
rd.close();
return response.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if (connection != null) {
connection.disconnect();
}
}
}
// GET
public String sendHttpGetRequest(String targetURL, String jsonValues) throws IOException {
//Create connection
URL url = new URL(targetURL + jsonToQueryString(jsonValues));
// Send request
URLConnection connection = null;
connection = url.openConnection();
connection.setRequestProperty("Accept-Charset", "URF-8");
// Get response
InputStream response = connection.getInputStream();
try (Scanner scanner = new Scanner(response)) {
String responseBody = scanner.useDelimiter("\\A").next();
return responseBody;
}
}
// json(String) => queryString
public String jsonToQueryString(String jsonValues) throws JsonProcessingException {
String queryString = "";
HashMap<String,Object> jsonMap = null;
jsonMap = new ObjectMapper().readValue(jsonValues, HashMap.class);
for(String strKey : jsonMap.keySet()) {
queryString += "?" + strKey + "=" + jsonMap.get(strKey);
}
return queryString;
}
}
サーバコード(TestControl)
import com.testserver.ValueVo;
import org.springframework.web.bind.annotation.*;
@RestController
public class TestController {
@GetMapping("/get")
public String getTest(@RequestParam String value) {
System.out.println("get : " + value);
return value;
}
@PostMapping("/post")
public String postTest(@RequestBody ValueVo valueVo) {
String value = valueVo.getValue();
System.out.println("post : " + value);
return value;
}
}
サーバコード(Value VO)
import lombok.Data;
@Data
public class ValueVo {
private String value;
}
コメントリンク
https://stackoverflow.com/questions/1359689/how-to-send-http-request-in-java
https://stackoverflow.com/questions/2793150/how-to-use-java-net-urlconnection-to-fire-and-handle-http-requests
Reference
この問題について([JAVA](Swing)入力を受けてHTTPリクエスト(GET、POST)を送信), 我々は、より多くの情報をここで見つけました
https://velog.io/@kkj53051000/JAVASwing-입력-받고-HTTP-요청-보내기-GET-POST
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
HttpURLConnection connection = null;
.
. 중략
.
// GET
public String sendHttpGetRequest(String targetURL, String jsonValues) throws IOException {
//Create connection
URL url = new URL(targetURL + jsonToQueryString(jsonValues));
// Send request
URLConnection connection = null;
connection = url.openConnection();
connection.setRequestProperty("Accept-Charset", "URF-8");
// Get response
InputStream response = connection.getInputStream();
try (Scanner scanner = new Scanner(response)) {
String responseBody = scanner.useDelimiter("\\A").next();
return responseBody;
}
}
// json(String) => queryString
public String jsonToQueryString(String jsonValues) throws JsonProcessingException {
String queryString = "";
HashMap<String,Object> jsonMap = null;
jsonMap = new ObjectMapper().readValue(jsonValues, HashMap.class);
for(String strKey : jsonMap.keySet()) {
queryString += "?" + strKey + "=" + jsonMap.get(strKey);
}
return queryString;
}
HttpURLConnection connection = null;
.
. 중략
.
// POST
public String sendHttpPostRequest(String targetURL, String jsonValues) {
try {
// Create connection
URL url = new URL(targetURL);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json; utf-8");
connection.setRequestProperty("Content-Length", Integer.toString(jsonValues.getBytes().length));
connection.setRequestProperty("Content-Language", "en-US");
connection.setUseCaches(false);
connection.setDoOutput(true);
// Send request
DataOutputStream wr = new DataOutputStream (connection.getOutputStream());
wr.writeBytes(jsonValues);
wr.flush();
wr.close();
// Get Response
InputStream is = connection.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
StringBuilder response = new StringBuilder(); // or StringBuffer if Java version 5+
String line;
while ((line = rd.readLine()) != null) {
response.append(line);
response.append('\r');
}
rd.close();
return response.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if (connection != null) {
connection.disconnect();
}
}
}
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class SwingHttpRequest extends JFrame {
static HttpURLConnection connection = null;
public static void main(String[] args) throws IOException {
SwingHttpRequest swingHttpRequest = new SwingHttpRequest();
swingHttpRequest.sendText(swingHttpRequest);
}
public void sendText(SwingHttpRequest swingHttpRequest) {
JTextField textField = new JTextField(20);
JButton button = new JButton("GET, POST 요청");
add(textField);
add(button);
setVisible(true);
setLayout(new FlowLayout());
setSize(300, 150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button.addActionListener(new ActionListener() { // 익명 객체
@Override
public void actionPerformed(ActionEvent e) {
Map<String, String> mapValues = new HashMap<>();
mapValues.put("value", textField.getText());
try {
String jsonValues = new ObjectMapper().writeValueAsString(mapValues);
String getUrl = "http://localhost:8080/get";
String postUrl = "http://localhost:8080/post";
// GET 요청
String getResponse = swingHttpRequest.sendHttpGetRequest(getUrl, jsonValues);
System.out.println("getResponse : " + getResponse);
// POST 요청
String postResponse = swingHttpRequest.sendHttpPostRequest(postUrl, jsonValues);
System.out.println("postResponse : " + postResponse);
} catch (IOException ex) {
ex.printStackTrace();
}
}
});
}
// POST
public String sendHttpPostRequest(String targetURL, String jsonValues) {
try {
// Create connection
URL url = new URL(targetURL);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json; utf-8");
connection.setRequestProperty("Content-Length", Integer.toString(jsonValues.getBytes().length));
connection.setRequestProperty("Content-Language", "en-US");
connection.setUseCaches(false);
connection.setDoOutput(true);
// Send request
DataOutputStream wr = new DataOutputStream (connection.getOutputStream());
wr.writeBytes(jsonValues);
wr.flush();
wr.close();
// Get Response
InputStream is = connection.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
StringBuilder response = new StringBuilder(); // or StringBuffer if Java version 5+
String line;
while ((line = rd.readLine()) != null) {
response.append(line);
response.append('\r');
}
rd.close();
return response.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if (connection != null) {
connection.disconnect();
}
}
}
// GET
public String sendHttpGetRequest(String targetURL, String jsonValues) throws IOException {
//Create connection
URL url = new URL(targetURL + jsonToQueryString(jsonValues));
// Send request
URLConnection connection = null;
connection = url.openConnection();
connection.setRequestProperty("Accept-Charset", "URF-8");
// Get response
InputStream response = connection.getInputStream();
try (Scanner scanner = new Scanner(response)) {
String responseBody = scanner.useDelimiter("\\A").next();
return responseBody;
}
}
// json(String) => queryString
public String jsonToQueryString(String jsonValues) throws JsonProcessingException {
String queryString = "";
HashMap<String,Object> jsonMap = null;
jsonMap = new ObjectMapper().readValue(jsonValues, HashMap.class);
for(String strKey : jsonMap.keySet()) {
queryString += "?" + strKey + "=" + jsonMap.get(strKey);
}
return queryString;
}
}
import com.testserver.ValueVo;
import org.springframework.web.bind.annotation.*;
@RestController
public class TestController {
@GetMapping("/get")
public String getTest(@RequestParam String value) {
System.out.println("get : " + value);
return value;
}
@PostMapping("/post")
public String postTest(@RequestBody ValueVo valueVo) {
String value = valueVo.getValue();
System.out.println("post : " + value);
return value;
}
}
import lombok.Data;
@Data
public class ValueVo {
private String value;
}
Reference
この問題について([JAVA](Swing)入力を受けてHTTPリクエスト(GET、POST)を送信), 我々は、より多くの情報をここで見つけました https://velog.io/@kkj53051000/JAVASwing-입력-받고-HTTP-요청-보내기-GET-POSTテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol