투케이2K

78. (AndroidStudio/android/java) Volley 라이브러리 사용해 POST BODY JSON 방식으로 요청 및 응답 값 확인 실시 본문

Android

78. (AndroidStudio/android/java) Volley 라이브러리 사용해 POST BODY JSON 방식으로 요청 및 응답 값 확인 실시

투케이2K 2021. 3. 3. 10:39

/* =========================== */

[ 개발 환경 설정 ]

개발 툴 : AndroidStudio

개발 언어 : java

/* =========================== */

/* =========================== */

[소스 코드]

 

//======== [build.gradle(Module:app)] ========
implementation 'com.android.volley:volley:1.1.0'



//======== [AndroidManifest.xml] ========
<uses-permission android:name="android.permission.INTERNET"/>
application 내부 : android:usesCleartextTraffic="true"



//======== [java 메소드 호출] ========
//TODO import com.android.volley.Response; 를 상속받아야 합니다
getRequestVolleyPOST_BODY_JSON("http://jsonplaceholder.typicode.com/posts");



//======== [java 메소드 정의] ========
public void getRequestVolleyPOST_BODY_JSON(final String url){
	//TODO 데이터 Request 객체 생성
	RequestQueue queue = Volley.newRequestQueue(this);

	//TODO 파라미터값 선언 실시
	JSONObject jsonBodyObj = new JSONObject();
	try{
		jsonBodyObj.put("userId","1");
		jsonBodyObj.put("id","1");
	}catch (JSONException e){
		e.printStackTrace();
	}
	final String requestBody = String.valueOf(jsonBodyObj.toString());

	Log.d("---","---");
	Log.w("//===========//","================================================");
	Log.d("","\n"+"[A_Main > getRequestVolleyPOST_BODY_JSON() 메소드 : Volley POST_BODY_JSON 요청 실시]");
	Log.d("","\n"+"["+"요청 주소 - "+String.valueOf(url)+"]");
	Log.d("","\n"+"["+"전송 값 - "+String.valueOf(jsonBodyObj.toString())+"]");
	Log.d("","\n"+"["+"전송 타입 - "+String.valueOf("application/json")+"]");
	Log.w("//===========//","================================================");
	Log.d("---","---");

	//TODO 데이터 Response 객체 생성
	JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url, null,
			//TODO 데이터 전송 요청 성공
			new Response.Listener<JSONObject>() {
				@Override
				public void onResponse(JSONObject response) {
					Log.d("---","---");
					Log.w("//===========//","================================================");
					Log.d("","\n"+"[A_Main > getRequestVolleyPOST_BODY_JSON() 메소드 : Volley POST_BODY_JSON 요청 응답]");
					Log.d("","\n"+"["+"응답 전체 - "+String.valueOf(response.toString())+"]");
					Log.w("//===========//","================================================");
					Log.d("---","---");
				}
			},
			//TODO 데이터 전송 요청 에러 발생
			new Response.ErrorListener() {
				@Override
				public void onErrorResponse(VolleyError error) {
					Log.d("---","---");
					Log.e("//===========//","================================================");
					Log.d("","\n"+"[A_Main > getRequestVolleyPOST_BODY_JSON() 메소드 : Volley POST_BODY_JSON 요청 실패]");
					Log.d("","\n"+"["+"에러 코드 - "+String.valueOf(error.toString())+"]");
					Log.e("//===========//","================================================");
					Log.d("---","---");
				}
			})
	//TODO 헤더값 선언 실시 및 Body 데이터 바이트 변환 실시
	{
		@Override
		public Map<String, String> getHeaders() throws AuthFailureError{
			HashMap<String, String> headers = new HashMap<String, String>();
			headers.put("Content-Type", "application/json");
			return headers;
		}
		@Override
		public byte[] getBody() {
			try {
				if (requestBody != null && requestBody.length()>0 && !requestBody.equals("")){
					return requestBody.getBytes("utf-8");
				}
				else {
					return null;
				}
			} catch (UnsupportedEncodingException uee) {
				return null;
			}
		}
	};

	request.setShouldCache(false);
	queue.add(request);
}

/* =========================== */

[결과 출력]

* =========================== */

반응형
Comments