반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 자바프로그래밍
- Pandas
- MySQL
- 자바기초
- Matplotlib 기초
- 자바
- 판다스공부
- 자바공부
- 파이썬
- 스트림릿
- 스트림릿 기본
- RESTful API
- Streamlit기본
- Android
- java
- db
- JavaScript
- streamlit
- 웹대시보드 제작
- 자바스크립트 공부
- 파이썬공부
- serverless
- 자바스크립트
- 안드로이드 앱 개발
- 자바초보
- Streamlit기초
- 판다스
- 웹대시보드 기초
- 데이터베이스
- 안드로이드 스튜디오
Archives
- Today
- Total
ruriruriya
[Android] 안드로이드 - Volley 라이브러리를 이용한 POST 통신 방법 (body에 json 보내기) 본문
🤖Android/Java
[Android] 안드로이드 - Volley 라이브러리를 이용한 POST 통신 방법 (body에 json 보내기)
루리야ㅑ 2024. 1. 3. 17:15반응형
Volley 라이브러리를 활용해서 POST 방식으로 body에 json을 보내보자.
파파고 API로 진행한다.
1. 버튼 생성 및 setOnClickListener 함수 생성
버튼을 만들고 setOnClickListener 함수를 만든다.
그리고 onClick 함수 오버라이딩
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
2. 정보 가져오기
어떤 언어로 번역할지 정보를 가져온다.
public void onClick(View v) {
// 1. 어떤 언어로 번역할 지의 정보를 가져온다.
int radioButtonId = radioGroup.getCheckedRadioButtonId();
target = "";
if (radioButtonId == R.id.radioBtn1) {
// 영어
target = "ko";
} else if (radioButtonId == R.id.radioBtn2) {
// 중국어 간체
target = "zh-CN";
} else if (radioButtonId == R.id.radioBtn3) {
// 중국어 번체
target = "zh-TW";
} else if (radioButtonId == R.id.radioBtn4) {
// 태국어
target = "th";
} else {
Toast.makeText(MainActivity.this, "번역할 언어를 선택하세요.", Toast.LENGTH_SHORT).show();
return;
}
3. 번역할 문자 가져오기.
번역할 텍스트를 쓰면 가져오는 부분이다.
문장을 입력하지 않았을 경우를 대비해 Toast 안내문구도 만든다.
sentence = editText.getText().toString().trim();
if (sentence.isEmpty()) {
Toast.makeText(MainActivity.this, "문장을 입력하세요.", Toast.LENGTH_SHORT).show();
return;
}
4. body에 json 보내기
파파고 API 호출해서 body에 들어갈 데이터를 보낸다.
그리고 화면에 보여줄 때 최신데이터가 위에 올 수 있도록 한다.
RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
String url = "https://openapi.naver.com/v1/papago/n2mt";
JSONObject body = new JSONObject();
try {
body.put("source", "en");
body.put("target", target);
body.put("text", sentence);
} catch (JSONException e) {
// 유저한테 에러 알려주기
return;
}
JsonObjectRequest request = new JsonObjectRequest(
Request.Method.POST,
url,
body,// body에 들어갈 데이터
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
String result = response.getJSONObject("message").getJSONObject("result").getString("translatedText");
txtResult.setText(result);
History history = new History(sentence, result, target);
historyArrayList.add(0,history); // 최신이 첫번 째에 나오도록.
} catch (JSONException ex) {
// 유저에게 에러 알려주기
return;
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}
);
5. 네이버 시크릿 키 header 삽입
JsonObjectRequest의 파라미터 뒤에 작성한다.
RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
String url = "https://openapi.naver.com/v1/papago/n2mt";
JSONObject body = new JSONObject();
try {
body.put("source", "en");
body.put("target", target);
body.put("text", sentence);
} catch (JSONException e) {
// 유저한테 알려주고
return;
}
JsonObjectRequest request = new JsonObjectRequest(
Request.Method.POST,
url,
body,// body에 들어갈 데이터
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
String result = response.getJSONObject("message").getJSONObject("result").getString("translatedText");
txtResult.setText(result);
History history = new History(sentence, result, target);
historyArrayList.add(0,history); // 최신이 첫번 째에 나오도록.
} catch (JSONException ex) {
// 유저에게 알리고
return;
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}
) {
// 네이버 시크릿 키. header 삽입
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<>();
headers.put("X-Naver-Client-Id", Config.X_NAVER_CLIENT_ID);
headers.put("X-Naver-Client-Secret", Config.X_NAVER_CLIENT_SECRET);
return headers;
}
};
6.queue 에 request 추가
queue.add(request);
반응형
'🤖Android > Java' 카테고리의 다른 글
[Android] 안드로이드 - Retrofit2 라이브러리 사용을 위한 설정 방법 (1) | 2024.01.04 |
---|---|
[Android] 안드로이드 - Volley에서 Header에 데이터 세팅하는 방법 (1) | 2024.01.04 |
[Android] 안드로이드 - Intent의 함수들 (0) | 2024.01.03 |
[Android] 안드로이드 - RecyclerView 페이징 처리하는 방법 (0) | 2024.01.03 |
[Android] 안드로이드 - 이미지 처리를 위한 Glide 라이브러리 사용법 (2) | 2024.01.03 |