dependencies {
implementation 'com.android.volley:volley:1.2.1'
}네트워크 통신을 위해 Volley 준비
// 네트워크 통신을 위해 Volley 준비
RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
Request 요청 만들기
// Request요청을 만들어야 한다. 값 1개를 가져올때 사용하는 방법
JsonObjectRequest request = new JsonObjectRequest(
Request.Method.GET,
"url",
null, //보낼 값
new Response.Listener<JSONObject>() { // 요청에 성공했을때
@Override
public void onResponse(JSONObject response) {
}
},
new Response.ErrorListener() { // 요청에 실패했을때
@Override
public void onErrorResponse(VolleyError error) {
}
}
);
네트워크 통신 시작
//네트워크 통신 시켜라.
queue.add(request);
Volley로 GET방식에 대해 통신을 해보자.
통신하는데 있어서 준비와 시작에 관해서는 POST와 크게 차이가 없다.
// Request요청을 만들어야 한다. 값 1개를 가져올때 사용하는 방법
JsonObjectRequest request = new JsonObjectRequest(
Request.Method.GET,
"https://jsonplaceholder.typicode.com/posts/1",
null, //보낼 값
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
// 1. 데이터를 가져오는 작업
try {
int userId = response.getInt("userId");
int id = response.getInt("id");
String title = response.getString("title");
String body = response.getString("body");
// 2. 화면에 보여주는 작업
txtUserId.setText(userId + "");
txtId.setText(id + "");
txtTitle.setText(title);
txtBody.setText(body);
} catch (JSONException e) {
// 오류 관련해서 유저한테 알려주는 구문 작성하면 된다.
Log.i("MAIN HTTP ERROR", e.toString());
Toast.makeText(MainActivity.this, "네트워크 통신중 문제 발생", Toast.LENGTH_SHORT).show();
return;
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// 통신에 실패할 경우에 대해 로직 작성
}
}
);
// url 및 데이터 설정
String url = "https://openapi.naver.com/v1/papago/n2mt";
JSONObject body = new JSONObject(); //보낼 데이터
try {
body.put("source", source);
body.put("target", target);
body.put("text", text);
} catch (JSONException e) {
throw new RuntimeException(e);
}
// POST 통신 설정
JsonObjectRequest request = new JsonObjectRequest(
Request.Method.POST,
url, //URL 설정
body, // 보낼 데이터 JSON 설정
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
//네이버로 부터 받은 데이터를 처리하고 화면에 표시
try {
String translatedText = response.getJSONObject("message").getJSONObject("result").getString("translatedText");
txtResult.setText(translatedText);
Papago papago = new Papago(text, translatedText, target);
papagoArrayList.add(papago);
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}
);
// POST 통신 설정
JsonObjectRequest request = new JsonObjectRequest(
Request.Method.POST,
url, //URL 설정
body, // 보낼 데이터 JSON 설정
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
//네이버로 부터 받은 데이터를 처리하고 화면에 표시
try {
String translatedText = response.getJSONObject("message").getJSONObject("result").getString("translatedText");
txtResult.setText(translatedText);
Papago papago = new Papago(text, translatedText, target);
papagoArrayList.add(papago);
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}
){ // 헤더 설정
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> header = new HashMap<>();
//header.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
header.put("X-Naver-Client-Id", Config.NAVER_CLIENT_ID);
header.put("X-Naver-Client-Secret", Config.NAVER_CLIENT_SECRET);
return header;
}
};
좋은 글 잘 읽었습니다, 감사합니다.