각 언어별로 http통신을 보내는 예제이다.
최대한 간단한 코드로 작성했으며 성능보다는 쉽게 쓰는데 초점을 맞췄다.
또한 최대한 기본 라이브러리만 사용했으며 기본 외의 라이브러리를 사용했을 경우 제목에 첨언하도록 하겠다.
단 기본외의 라이브러리를 사용했을 경우에는 가장 범용적인것을 우선해서 사용하겠다.
성능을 위해서라면 지양해야할 코드들이 몇 있지만 알아서 고치거나 다소의 성능저하는 감안하고 쓰면된다.
코드에 대한 설명은 특별한 경우를 제외하면 첨언하지 않겠다.
애당초 이거 설명이 필요할 정도면 찾아서 읽지 않았으리라 생각이 된다.
설명이 필요하다면 댓글로 남겨달라.
package com.company;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class Main {
public static void main(String[] args) {
String strUrl = "https://httpbin.org/get";
String strMethod = "get";
BufferedReader in = null;
try {
URL url = new URL(strUrl);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod(strMethod.toUpperCase());
in = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
String data = "";
String tmp;
while ((tmp = in.readLine()) != null) {
data += tmp;
}
System.out.println(data);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
var request = require('request');
var strUri = 'https://httpbin.org/get';
var strMethod = 'get';
request({uri: strUri, method: strMethod}, (err, res, body) => {
console.log(body)
});
import requests
strUrl = 'https://httpbin.org/get'
strMethod = 'get'
if strMethod == 'get':
data1 = requests.get(strUrl).text
print(data1)
data2 = getattr(requests, strMethod)(strUrl).text
print(data2)
코드 스타일을 유지하고 싶으면 1번을, 유연성을 추구한다면 2번을 택해준다.
package main
import (
"fmt"
"io/ioutil"
"net/http"
"strings"
)
func main() {
strMethod := "get"
strURI := "https://httpbin.org/get"
req, _ := http.NewRequest(strings.ToUpper(strMethod), strURI, nil)
client := &http.Client{}
resp, _ := client.Do(req)
respBody, _ := ioutil.ReadAll(resp.Body)
data := string(respBody)
fmt.Println(data)
}
위 방법은 범용적인 방법이다. get과 post밖에 안되지만 저 둘만 쓴다면 압도적으로 줄일 수 있는 방법이 있다.
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
strURI := "https://httpbin.org/get"
resp, _ := http.Get(strURI)
respBody, _ := ioutil.ReadAll(resp.Body)
data := string(respBody)
fmt.Println(data)
}
단 저 메소드는 Get과 Post밖에 지원을 안한다.