3.1 ๋ณธ๋ฌธ ๊ฒ์์
์์ฒญ, ์ฆ ์์ฒญ ๋ณธ๋ฌธ ์ ์ถ๊ฐํด์ผ ํ ๋ GET ์์ฒญ ์ธ์ PUT ๋ฐ POST ์์ฒญ ๋ ์๋ค๋ ์ฌ์ค์ ์์ง ์์์ผ๋ฉด ํฉ๋๋ค .request body
์ด ํด๋์ค์๋ ์ด๋ฅผ ์ํ HttpRequest
ํน๋ณํ ๋ด๋ถ ํด๋์ค๊ฐ ์์ต๋๋ค BodyPublisher
. ๊ธฐ์ ์ ์ผ๋ก๋ ์ฌ๋ฌ ๊ตฌํ์ด ์๋ ์ธํฐํ์ด์ค์ด์ง๋ง ์๋์์ ๋
ผ์ํ ๊ฒ์
๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์์ฒญ ๋ณธ๋ฌธ์ด ์๋ค๋ ๊ฐ์ฅ ๊ฐ๋จํ ๊ฒ๋ถํฐ ์์ํ ๊ฒ์ ๋๋ค. ์, ๋ฐ์ํฉ๋๋ค.
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.POST(HttpRequest.BodyPublishers.noBody())
.build();
๊ฐ๋จํ๊ณ ์๋ฆ๋ต์ต๋๋ค.
3.2 ofString()
๋ ๋ฒ์งธ๋ก ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ต์ ์ ์ผ๋ถ ๋ฌธ์์ด์ ์์ฒญ ๋ณธ๋ฌธ์ผ๋ก ์ ๋ฌํ๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ๋งค์ฐ ๊ฐ๋จํ๊ฒ ์ํ๋ฉ๋๋ค.
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.headers("Content-Type", "text/plain;charset=UTF-8")
.POST(HttpRequest.BodyPublishers.ofString("Hello"))
.build();
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ์ ์ก๋๋ ๋ฌธ์์ด์ ์ธ์ฝ๋ฉ์ ์ค์ ํ ์ ์์ต๋๋ค. ์์ฒญ์ ๋ณด๋ธ http ์๋ฒ๊ฐ UTF8์์ ์๋ํ์ง ์๋ ๊ฒฝ์ฐ ๋งค์ฐ ์ ์ฉํ ์ ์์ต๋๋ค.
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.POST(HttpRequest.BodyPublishers.ofString("Hello", Charset. US-ASCII)))
.build();
3.3 ofFile()
๋ง์ง๋ง์ผ๋ก POST ์์ฒญ ์ ํ์ผ์ ์ฒจ๋ถํ ์ ์์ต๋๋ค . ์๋ฐํ๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์๋ฒ์ ์
๋ก๋๋๋ ๋ฐฉ์์
๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด ๋ก์ปฌ ํ์ผ์ ofFile()
์ ์กํ ๋ฉ์๋๋ฅผ ํธ์ถํด์ผ ํฉ๋๋ค.Path
Path avatar = Path.of("c://avatar.jpeg");
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.headers("Content-Type", "image/jpeg")
.POST(HttpRequest.BodyPublishers.ofFile(avatar))
.build();
3.4 ofByteArray()
๋ ๋ค๋ฅธ ์ผ๋ฐ์ ์ธ ์๋๋ฆฌ์ค๋ ๋ฐ์ดํธ ์ธํธ๋ฅผ ์๋ฒ๋ก ๋ณด๋ด๋ ๊ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด, ์ด๋ค ๊ฐ์ฒด๋ฅผ ์ผ๋ จ์ ๋ฐ์ดํธ๋ก ์ง๋ ฌํํ๊ฑฐ๋ ๋ฌด์ธ๊ฐ๋ฅผ ์ํธํํ๊ฑฐ๋ ์ผ๋ถ ๋ฐ์ดํฐ ๋ฒํผ๋ฅผ ๋ณด๋ด๋ ค๊ณ ํฉ๋๋ค. ์ด๊ฒ์ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค .ofByteArray()
.
์ด ๋ฉ์๋๋ ๋ฐ์ดํธ ๋ฐฐ์ด์ ๋งค๊ฐ ๋ณ์๋ก ์ฌ์ฉํฉ๋๋ค. ์:
byte[] data = "My Secret Message".getBytes();
byte[] dataEncripted = SuperEncriptor.encript(data);
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.headers("Content-Type", "application/octet-stream")
.POST(HttpRequest.BodyPublishers.ofByteArray(dataEncripted))
.build();
3.5 ofInputStream()
๋ง์ง๋ง์ผ๋ก ๋ง์ง๋ง์ผ๋ก ํฅ๋ฏธ๋ก์ด ์๋๋ฆฌ์ค๋ POST ์์ฒญInputStream
์ ์ฐ๊ฒฐํ๋ ๊ฒ์
๋๋ค .
์ด๋ฅผ ์ํ ํน๋ณํ ๊ธฐ๋ฅ์ด ์์ต๋๋ค ofInputStream()
. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋
๋ ๋งค์ฐ ๋๋ํฉ๋๋ค. ์คํธ๋ฆผ์์ ์คํธ๋ฆผ์ผ๋ก ๋ฐ์ดํฐ ์ ์ก์ ๊ตฌ์ฑํ๊ณ ์์ง ๊ณต๊ฐ๋์ง ์์ POS ์์ฒญ ์ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ์ฒจ๋ถํ ์ ์์ต๋๋ค .
ofInputStream()
๊ฒฐ๊ณผ๋ก ์คํธ๋ฆผ์ ๋ฐํํ ํจ์์ ํจ์๋ฅผ ์ ๋ฌํด์ผ ํฉ๋๋ค InputStream
.
์:
byte[] data = "My Secret Message".getBytes();
//wrapping an array of bytes into a stream.
InputStream is = new ByteArrayInputStream(data);
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.headers("Content-Type", "application/octet-stream")
.POST(HttpRequest.BodyPublishers.ofInputStream (() -> is;))
.build();
๋๋ ์ฌ๊ธฐ ์ ์์ ์ธํ๋ฆฌ๋ฅผ ์น๋ ๊ฒ์ ๊ท์ฐฎ๊ฒํ์ง ์์์ง๋ง ๋น์ ์ ์๋ฆฌ๋ฅผ ์ดํดํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ค์ ์ ๊ทธ๋ ๊ฒ ํ์ต๋๊น? ๊ฑฐ์ ํญ์ ofByteArray()
. ๊ทธ๋ฌ๋ ๋น๋๊ธฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ฑฐ๋ ํนํ ๋ณต์กํ ์๋๋ฆฌ์ค๋ฅผ ๊ตฌํํด์ผ ํ๋ ๊ฒฝ์ฐ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
GO TO FULL VERSION