Notice
Recent Posts
Recent Comments
Link
투케이2K
157. (AndroidStudio/android/java) ok http 라이브러리 사용해 get , post 데이터 요청 및 응답 확인 실시 본문
Android
157. (AndroidStudio/android/java) ok http 라이브러리 사용해 get , post 데이터 요청 및 응답 확인 실시
투케이2K 2021. 5. 19. 13:58/* =========================== */
[ 개발 환경 설정 ]
개발 툴 : AndroidStudio
개발 언어 : java
/* =========================== */
/* =========================== */
[소스 코드]
/** ========= [필요한 퍼미션 및 라이브러리] ========= **/
//TODO [퍼미션]
/**
* <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
* <uses-permission android:name="android.permission.INTERNET"/>
* */
//TODO [라이브러리]
/**
* allprojects > repositories > mavenCentral() 추가
* implementation("com.squareup.okhttp3:okhttp:4.9.0")
* */
/** ========= [GET 방식 HTTP 요청 메소드] ========= **/
public void requestGetHttp(final String url){
try {
//TODO [파라미터값 선언 실시]
Map params = new HashMap ();
params.put("userId",1);
params.put("id",1);
//TODO [전송 Url 및 Data 파싱 실시]
String dataParse = "";
String getUrl = "";
dataParse = String.valueOf(params.toString());
dataParse = dataParse.replaceAll("[{]","");
dataParse = dataParse.replaceAll("[}]","");
dataParse = dataParse.replaceAll("[,]","&");
dataParse = dataParse.replaceAll(" ","");
final String dataParseFinal = dataParse;
//TODO [전송 형태 url + data 주소 매핑]
getUrl = url + "?" + dataParse;
getUrl = getUrl.replaceAll(" ","");
//TODO [OK HTTP 객체 선언 실시]
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
//.addHeader("x-api-key", RestTestCommon.API_KEY) //TODO [헤더]
.url(getUrl) //TODO [주소]
.build();
Log.d("---","---");
Log.d("//===========//","================================================");
Log.d("","\n"+"[A_OkHttp > requestGetHttp() 메소드 : OK HTTP GET 요청 실시]");
Log.d("","\n"+"["+"요청 주소 : " + String.valueOf(url)+"]");
Log.d("","\n"+"["+"전송 값 : " + String.valueOf(dataParse)+"]");
Log.d("","\n"+"["+"전송 형태 : " + String.valueOf(getUrl)+"]");
Log.d("//===========//","================================================");
Log.d("---","---");
//TODO [비동기 처리 (enqueue 사용)]
client.newCall(request).enqueue(new Callback() {
//TODO [성공한 경우]
@Override
public void onResponse(Call call, Response response) throws IOException {
final String responseCode = String.valueOf(response.toString());
final String responseData = response.body().string();
runOnUiThread(new Runnable() {
public void run() {
Log.d("---","---");
Log.w("//===========//","================================================");
Log.d("","\n"+"[A_OkHttp > requestGetHttp() 메소드 : OK HTTP GET 요청 성공]");
Log.d("","\n"+"["+"응답 코드 : " + String.valueOf(responseCode)+"]");
Log.d("","\n"+"["+"응답 값 : " + String.valueOf(responseData)+"]");
Log.w("//===========//","================================================");
Log.d("---","---");
//TODO [Alert 팝업창 알림 실시]
getAlertDialog("[GET 알림]",
"요청 주소 : "+ url + "\n" + "\n" +
"요청 값 : "+ dataParseFinal + "\n" + "\n" +
"응답 값 : "+ responseData + "\n",
"확인", "취소", "");
}
});
}
//TODO [실패한 경우]
@Override
public void onFailure(Call call, IOException e) {
final String responseCode = String.valueOf(e.toString());
final String responseData = String.valueOf(e.getMessage());
runOnUiThread(new Runnable() {
public void run() {
Log.d("---","---");
Log.e("//===========//","================================================");
Log.d("","\n"+"[A_OkHttp > requestGetHttp() 메소드 : OK HTTP GET 요청 실패]");
Log.d("","\n"+"["+"에러 코드 : " + String.valueOf(responseCode)+"]");
Log.d("","\n"+"["+"에러 값 : " + String.valueOf(responseData)+"]");
Log.e("//===========//","================================================");
Log.d("---","---");
//TODO [Alert 팝업창 알림 실시]
getAlertDialog("[GET 알림]",
"요청 주소 : "+ url + "\n" + "\n" +
"요청 값 : "+ dataParseFinal + "\n" + "\n" +
"에러 값 : "+ responseData + "\n",
"확인", "취소", "");
}
});
}
});
} catch (final Exception e){
runOnUiThread(new Runnable() {
public void run() {
Log.d("---","---");
Log.e("//===========//","================================================");
Log.d("","\n"+"[A_OkHttp > requestGetHttp() 메소드 : OK HTTP GET 요청 실패 - CATCH]");
Log.d("","\n"+"["+"에러 값 : " + String.valueOf(e.getMessage())+"]");
Log.e("//===========//","================================================");
Log.d("---","---");
//TODO [Alert 팝업창 알림 실시]
getAlertDialog("[GET 알림]",
"[CATCH EXCEPTION]" + "\n" + "\n" +
"에러 값 : "+ String.valueOf(e.getMessage()) + "\n",
"확인", "취소", "");
}
});
e.printStackTrace();
}
}
/** ========= [POST 방식 HTTP 요청 메소드] ========= **/
public void requestPostHttp(final String url){
try {
//TODO [파라미터값 선언 실시]
Map params = new HashMap ();
params.put("userId",1);
params.put("id",1);
//TODO [전송 Url 및 Data 파싱 실시]
String dataParse = "";
String postUrl = "";
dataParse = String.valueOf(params.toString());
dataParse = dataParse.replaceAll("[{]","");
dataParse = dataParse.replaceAll("[}]","");
dataParse = dataParse.replaceAll("[,]","&");
dataParse = dataParse.replaceAll(" ","");
final String dataParseFinal = dataParse;
//TODO [전송 형태 url + data 주소 매핑]
postUrl = url + "?" + dataParse;
postUrl = postUrl.replaceAll(" ","");
//TODO [OK HTTP 객체 선언 실시]
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
//.addHeader("x-api-key", RestTestCommon.API_KEY) //TODO [헤더]
.url(postUrl) //TODO [주소]
.post(RequestBody.create("", MediaType.parse("application/json")))
.build();
Log.d("---","---");
Log.d("//===========//","================================================");
Log.d("","\n"+"[A_OkHttp > requestPostHttp() 메소드 : OK HTTP POST 요청 실시]");
Log.d("","\n"+"["+"요청 주소 : " + String.valueOf(url)+"]");
Log.d("","\n"+"["+"전송 값 : " + String.valueOf(dataParse)+"]");
Log.d("","\n"+"["+"전송 형태 : " + String.valueOf(postUrl)+"]");
Log.d("//===========//","================================================");
Log.d("---","---");
//TODO [비동기 처리 (enqueue 사용)]
client.newCall(request).enqueue(new Callback() {
//TODO [성공한 경우]
@Override
public void onResponse(Call call, Response response) throws IOException {
final String responseCode = String.valueOf(response.toString());
final String responseData = response.body().string();
runOnUiThread(new Runnable() {
public void run() {
Log.d("---","---");
Log.w("//===========//","================================================");
Log.d("","\n"+"[A_OkHttp > requestPostHttp() 메소드 : OK HTTP POST 요청 성공]");
Log.d("","\n"+"["+"응답 코드 : " + String.valueOf(responseCode)+"]");
Log.d("","\n"+"["+"응답 값 : " + String.valueOf(responseData)+"]");
Log.w("//===========//","================================================");
Log.d("---","---");
//TODO [Alert 팝업창 알림 실시]
getAlertDialog("[POST 알림]",
"요청 주소 : "+ url + "\n" + "\n" +
"요청 값 : "+ dataParseFinal + "\n" + "\n" +
"응답 값 : "+ responseData + "\n",
"확인", "취소", "");
}
});
}
//TODO [실패한 경우]
@Override
public void onFailure(Call call, IOException e) {
final String responseCode = String.valueOf(e.toString());
final String responseData = String.valueOf(e.getMessage());
runOnUiThread(new Runnable() {
public void run() {
Log.d("---","---");
Log.e("//===========//","================================================");
Log.d("","\n"+"[A_OkHttp > requestPostHttp() 메소드 : OK HTTP POST 요청 실패]");
Log.d("","\n"+"["+"에러 코드 : " + String.valueOf(responseCode)+"]");
Log.d("","\n"+"["+"에러 값 : " + String.valueOf(responseData)+"]");
Log.e("//===========//","================================================");
Log.d("---","---");
//TODO [Alert 팝업창 알림 실시]
getAlertDialog("[POST 알림]",
"요청 주소 : "+ url + "\n" + "\n" +
"요청 값 : "+ dataParseFinal + "\n" + "\n" +
"에러 값 : "+ responseData + "\n",
"확인", "취소", "");
}
});
}
});
} catch (final Exception e){
runOnUiThread(new Runnable() {
public void run() {
Log.d("---","---");
Log.e("//===========//","================================================");
Log.d("","\n"+"[A_OkHttp > requestPostHttp() 메소드 : OK HTTP POST 요청 실패 - CATCH]");
Log.d("","\n"+"["+"에러 값 : " + String.valueOf(e.getMessage())+"]");
Log.e("//===========//","================================================");
Log.d("---","---");
//TODO [Alert 팝업창 알림 실시]
getAlertDialog("[POST 알림]",
"[CATCH EXCEPTION]" + "\n" + "\n" +
"에러 값 : "+ String.valueOf(e.getMessage()) + "\n",
"확인", "취소", "");
}
});
e.printStackTrace();
}
}
/** ========= [POST BODY JSON 방식 HTTP 요청 메소드] ========= **/
public void requestPostBodyJsonHttp(final String url){
try {
//TODO [파라미터값 선언 실시]
JSONObject jsonObject = new JSONObject();
jsonObject.put("userId", "1");
jsonObject.put("id", "1");
final String dataParseFinal = jsonObject.toString();
//TODO [전송 Url 매핑]
String postUrl = String.valueOf(url);
postUrl = postUrl.replaceAll(" ","");
//TODO [OK HTTP 객체 선언 실시]
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
//.addHeader("x-api-key", RestTestCommon.API_KEY) //TODO [헤더]
.url(postUrl) //TODO [주소]
.post(RequestBody.create(jsonObject.toString(), MediaType.parse("application/json")))
.build();
Log.d("---","---");
Log.d("//===========//","================================================");
Log.d("","\n"+"[A_OkHttp > requestPostBodyJsonHttp() 메소드 : OK HTTP POST BODY JSON 요청 실시]");
Log.d("","\n"+"["+"요청 주소 : " + String.valueOf(url)+"]");
Log.d("","\n"+"["+"전송 값 : " + String.valueOf(jsonObject.toString())+"]");
Log.d("","\n"+"["+"전송 형태 : " + String.valueOf(postUrl)+"]");
Log.d("//===========//","================================================");
Log.d("---","---");
//TODO [비동기 처리 (enqueue 사용)]
client.newCall(request).enqueue(new Callback() {
//TODO [성공한 경우]
@Override
public void onResponse(Call call, Response response) throws IOException {
final String responseCode = String.valueOf(response.toString());
final String responseData = response.body().string();
runOnUiThread(new Runnable() {
public void run() {
Log.d("---","---");
Log.w("//===========//","================================================");
Log.d("","\n"+"[A_OkHttp > requestPostBodyJsonHttp() 메소드 : OK HTTP POST BODY JSON 요청 성공]");
Log.d("","\n"+"["+"응답 코드 : " + String.valueOf(responseCode)+"]");
Log.d("","\n"+"["+"응답 값 : " + String.valueOf(responseData)+"]");
Log.w("//===========//","================================================");
Log.d("---","---");
//TODO [Alert 팝업창 알림 실시]
getAlertDialog("[POST BODY JSON 알림]",
"요청 주소 : "+ url + "\n" + "\n" +
"요청 값 : "+ dataParseFinal + "\n" + "\n" +
"응답 값 : "+ responseData + "\n",
"확인", "취소", "");
}
});
}
//TODO [실패한 경우]
@Override
public void onFailure(Call call, IOException e) {
final String responseCode = String.valueOf(e.toString());
final String responseData = String.valueOf(e.getMessage());
runOnUiThread(new Runnable() {
public void run() {
Log.d("---","---");
Log.e("//===========//","================================================");
Log.d("","\n"+"[A_OkHttp > requestPostBodyJsonHttp() 메소드 : OK HTTP POST BODY JSON 요청 실패]");
Log.d("","\n"+"["+"에러 코드 : " + String.valueOf(responseCode)+"]");
Log.d("","\n"+"["+"에러 값 : " + String.valueOf(responseData)+"]");
Log.e("//===========//","================================================");
Log.d("---","---");
//TODO [Alert 팝업창 알림 실시]
getAlertDialog("[POST BODY JSON 알림]",
"요청 주소 : "+ url + "\n" + "\n" +
"요청 값 : "+ dataParseFinal + "\n" + "\n" +
"에러 값 : "+ responseData + "\n",
"확인", "취소", "");
}
});
}
});
} catch (final Exception e){
runOnUiThread(new Runnable() {
public void run() {
Log.d("---","---");
Log.e("//===========//","================================================");
Log.d("","\n"+"[A_OkHttp > requestPostBodyJsonHttp() 메소드 : OK HTTP POST BODY JSON 요청 실패 - CATCH]");
Log.d("","\n"+"["+"에러 값 : " + String.valueOf(e.getMessage())+"]");
Log.e("//===========//","================================================");
Log.d("---","---");
//TODO [Alert 팝업창 알림 실시]
getAlertDialog("[POST BODY JSON 알림]",
"[CATCH EXCEPTION]" + "\n" + "\n" +
"에러 값 : "+ String.valueOf(e.getMessage()) + "\n",
"확인", "취소", "");
}
});
e.printStackTrace();
}
}
/** ========= [POST 방식 HTTP 사진 등록 요청 메소드] ========= **/
public void requestPostImageHttp(final String url){
try {
//TODO [전송 Url 매핑]
String postUrl = String.valueOf(url);
postUrl = postUrl.replaceAll(" ","");
//TODO [파라미터값 선언 실시]
/**
* [File 전송 경로]
* 절대 경로 : /storage/emulated/0/Pictures/.pending-1621927497-PT20210518162457.JPG
* */
String fileRoot = String.valueOf(S_Preference.getString(getApplication(), "saveImageScopeAbsolute"));
RequestBody requestData = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("name", "twok")
.addFormDataPart("file", "", RequestBody.create(new File(fileRoot), MultipartBody.FORM))
.build();
final String requestParameter = "name="+"twok"+"&"
+"file="+String.valueOf(S_Preference.getString(getApplication(), "saveImageScopeAbsolute"));
//TODO [OK HTTP 객체 선언 실시]
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
//.addHeader("x-api-key", RestTestCommon.API_KEY) //TODO [헤더]
.url(postUrl) //TODO [주소]
.post(requestData)
.build();
Log.d("---","---");
Log.d("//===========//","================================================");
Log.d("","\n"+"[A_OkHttp > requestPostImageHttp() 메소드 : OK HTTP POST 사진 등록 요청 실시]");
Log.d("","\n"+"["+"요청 주소 : " + String.valueOf(url)+"]");
Log.d("","\n"+"["+"전송 타입 : " + String.valueOf(requestData.contentType())+"]");
Log.d("","\n"+"["+"전송 값 : " + String.valueOf(requestParameter)+"]");
Log.d("//===========//","================================================");
Log.d("---","---");
//TODO [비동기 처리 (enqueue 사용)]
client.newCall(request).enqueue(new Callback() {
//TODO [성공한 경우]
@Override
public void onResponse(Call call, Response response) throws IOException {
final String responseCode = String.valueOf(response.toString());
final String responseData = response.body().string();
runOnUiThread(new Runnable() {
public void run() {
Log.d("---","---");
Log.w("//===========//","================================================");
Log.d("","\n"+"[A_OkHttp > requestPostImageHttp() 메소드 : OK HTTP POST 사진 등록 요청 성공]");
Log.d("","\n"+"["+"응답 코드 : " + String.valueOf(responseCode)+"]");
Log.d("","\n"+"["+"응답 값 : " + String.valueOf(responseData)+"]");
Log.w("//===========//","================================================");
Log.d("---","---");
//TODO [Alert 팝업창 알림 실시]
getAlertDialog("[POST IMAGE 알림]",
"요청 주소 : "+ url + "\n" + "\n" +
"요청 값 : "+ requestParameter + "\n" + "\n" +
"응답 값 : "+ responseData + "\n",
"확인", "취소", "");
}
});
}
//TODO [실패한 경우]
@Override
public void onFailure(Call call, IOException e) {
final String responseCode = String.valueOf(e.toString());
final String responseData = String.valueOf(e.getMessage());
runOnUiThread(new Runnable() {
public void run() {
Log.d("---","---");
Log.e("//===========//","================================================");
Log.d("","\n"+"[A_OkHttp > requestPostImageHttp() 메소드 : OK HTTP POST 사진 등록 요청 실패]");
Log.d("","\n"+"["+"에러 코드 : " + String.valueOf(responseCode)+"]");
Log.d("","\n"+"["+"에러 값 : " + String.valueOf(responseData)+"]");
Log.e("//===========//","================================================");
Log.d("---","---");
//TODO [Alert 팝업창 알림 실시]
getAlertDialog("[POST IMAGE 알림]",
"요청 주소 : "+ url + "\n" + "\n" +
"요청 값 : "+ requestParameter + "\n" + "\n" +
"에러 값 : "+ responseData + "\n",
"확인", "취소", "");
}
});
}
});
} catch (final Exception e){
runOnUiThread(new Runnable() {
public void run() {
Log.d("---","---");
Log.e("//===========//","================================================");
Log.d("","\n"+"[A_OkHttp > requestPostImageHttp() 메소드 : OK HTTP POST 사진 등록 요청 실패 - CATCH]");
Log.d("","\n"+"["+"에러 값 : " + String.valueOf(e.getMessage())+"]");
Log.e("//===========//","================================================");
Log.d("---","---");
//TODO [Alert 팝업창 알림 실시]
getAlertDialog("[POST IMAGE 알림]",
"[CATCH EXCEPTION]" + "\n" + "\n" +
"에러 값 : "+ String.valueOf(e.getMessage()) + "\n",
"확인", "취소", "");
}
});
e.printStackTrace();
}
}
/** ========= [GET 방식 HTTP 사진 다운로드 메소드] ========= **/
public void requestGetImageDownHttp(final String url){
try {
//TODO [전송 Url 매핑]
String getUrl = String.valueOf(url);
getUrl = getUrl.replaceAll(" ","");
//TODO [파라미터값 선언 실시]
final String dataParseFinal = "";
//TODO [OK HTTP 객체 선언 실시]
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
//.addHeader("x-api-key", RestTestCommon.API_KEY) //TODO [헤더]
.url(getUrl) //TODO [주소]
.build();
Log.d("---","---");
Log.d("//===========//","================================================");
Log.d("","\n"+"[A_OkHttp > requestGetImageDownHttp() 메소드 : OK HTTP GET 사진 다운 요청 실시]");
Log.d("","\n"+"["+"요청 주소 : " + String.valueOf(url)+"]");
Log.d("","\n"+"["+"전송 값 : " + String.valueOf(dataParseFinal)+"]");
Log.d("//===========//","================================================");
Log.d("---","---");
//TODO [비동기 처리 (enqueue 사용)]
client.newCall(request).enqueue(new Callback() {
//TODO [성공한 경우]
@Override
public void onResponse(Call call, final Response response) throws IOException {
final String responseCode = String.valueOf(response.toString());
runOnUiThread(new Runnable() {
public void run() {
Log.d("---","---");
Log.w("//===========//","================================================");
Log.d("","\n"+"[A_OkHttp > requestGetImageDownHttp() 메소드 : OK HTTP GET 사진 다운 요청 성공]");
Log.d("","\n"+"["+"응답 코드 : " + String.valueOf(responseCode)+"]");
Log.w("//===========//","================================================");
Log.d("---","---");
//TODO [이미지를 바이트 값으로 받음]
try {
InputStream inputStream = response.body().byteStream();
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
inputStream.close();
//TODO [이미지 뷰에 비트맵 이미지 표시]
imageView.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
//TODO [Alert 팝업창 알림 실시]
getAlertDialog("[GET IMAGE DOWN 알림]",
"요청 주소 : "+ url + "\n" + "\n" +
"요청 값 : "+ dataParseFinal + "\n" + "\n" +
"응답 값 : "+ responseCode + "\n",
"확인", "취소", "");
}
});
}
//TODO [실패한 경우]
@Override
public void onFailure(Call call, IOException e) {
final String responseCode = String.valueOf(e.toString());
final String responseData = String.valueOf(e.getMessage());
runOnUiThread(new Runnable() {
public void run() {
Log.d("---","---");
Log.e("//===========//","================================================");
Log.d("","\n"+"[A_OkHttp > requestGetImageDownHttp() 메소드 : OK HTTP GET 사진 다운 요청 실패]");
Log.d("","\n"+"["+"에러 코드 : " + String.valueOf(responseCode)+"]");
Log.d("","\n"+"["+"에러 값 : " + String.valueOf(responseData)+"]");
Log.e("//===========//","================================================");
Log.d("---","---");
//TODO [Alert 팝업창 알림 실시]
getAlertDialog("[GET IMAGE DOWN 알림]",
"요청 주소 : "+ url + "\n" + "\n" +
"요청 값 : "+ dataParseFinal + "\n" + "\n" +
"에러 값 : "+ responseData + "\n",
"확인", "취소", "");
}
});
}
});
} catch (final Exception e){
runOnUiThread(new Runnable() {
public void run() {
Log.d("---","---");
Log.e("//===========//","================================================");
Log.d("","\n"+"[A_OkHttp > requestGetImageDownHttp() 메소드 : OK HTTP GET 사진 다운 요청 실패 - CATCH]");
Log.d("","\n"+"["+"에러 값 : " + String.valueOf(e.getMessage())+"]");
Log.e("//===========//","================================================");
Log.d("---","---");
//TODO [Alert 팝업창 알림 실시]
getAlertDialog("[GET IMAGE DOWN 알림]",
"[CATCH EXCEPTION]" + "\n" + "\n" +
"에러 값 : "+ String.valueOf(e.getMessage()) + "\n",
"확인", "취소", "");
}
});
e.printStackTrace();
}
}
/** ========= [AlertDialog 팝업창 호출 메소드 정의 실시] ========= **/
public void getAlertDialog(String header, String content, String ok, String no, String normal){
//TODO [타이틀 및 내용 표시]
final String Tittle = String.valueOf(header);
final String Message = String.valueOf(content);
//TODO [버튼 이름 정의]
String buttonNo = no;
String buttonYes = ok;
String buttonNature = normal;
try {
//TODO [AlertDialog 팝업창 생성]
new AlertDialog.Builder(A_OkHttp.this)
.setTitle(Tittle) //[팝업창 타이틀 지정]
//.setIcon(R.drawable.tk_app_icon) //[팝업창 아이콘 지정]
.setMessage(Message) //[팝업창 내용 지정]
.setCancelable(false) //[외부 레이아웃 클릭시도 팝업창이 사라지지않게 설정]
.setPositiveButton(buttonYes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
})
.setNegativeButton(buttonNo, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
})
.setNeutralButton(buttonNature, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
})
.show();
}
catch (Exception e){
Toast.makeText(getApplicationContext(), Tittle+"\n"+Message,Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
/* =========================== */
/* =========================== */
[결과 출력]
/* =========================== */
반응형
'Android' 카테고리의 다른 글
Comments