Android

안드로이드 http 통신

Machine_웅 2018. 5. 17. 14:48
728x90
반응형

//( 서버로부터 받기 )
public void getExchangeDataHttp(){
class getExchangeDataHttp extends AsyncTask<Void,Void,String> {

ProgressDialog dialog = new ProgressDialog(exchangeMainActivity.this);
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.setMessage("데이터 로드중");
dialog.setCanceledOnTouchOutside(false); // 바깥 터치 안되게
dialog.setCancelable(false); // 뒤로가기로 캔슬시키는거 안되게
dialog.show();

}

@Override
protected String doInBackground(Void... voids) {
try {
//--------------------------
// URL 설정하고 접속하기
//--------------------------


URL url = new URL(ipad+"/getExchangeData.php"); // php 주소
HttpURLConnection huc = (HttpURLConnection) url.openConnection();

//--------------------------
// 전송 모드 설정 - 기본적인 설정이다
//--------------------------

huc.setDefaultUseCaches(false);
huc.setDoInput(true); // 서버에서 읽기 모드 지정
huc.setDoOutput(true); // 서버로 쓰기 모드 지정
huc.setRequestMethod("POST"); // 전송 방식은 POST

huc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");


// 서버로 값 전달.
//--------------------------
// 서버로 값 전송
//--------------------------


StringBuffer buffer = new StringBuffer();
buffer.append("id").append("=").append(loginUserId); // php 변수에 값 대입

OutputStreamWriter outStream = new OutputStreamWriter(huc.getOutputStream(), "UTF-8"); // 안드에서 php로 보낼때 UTF8로 해야지 한글이 안깨진다.
// OutputStreamWriter outStream = new OutputStreamWriter(huc.getOutputStream(), "EUC-KR");
PrintWriter writer = new PrintWriter(outStream);
writer.write(buffer.toString());
writer.flush();

//--------------------------
// 서버에서 전송받기
//--------------------------
InputStreamReader tmp = new InputStreamReader(huc.getInputStream(), "UTF-8");
BufferedReader reader = new BufferedReader(tmp);
StringBuilder builder = new StringBuilder();
String str;
while ((str = reader.readLine()) != null) { // 서버에서 라인단위로 보내줄 것이므로 라인단위로 읽는다
builder.append(str); // View에 표시하기 위해 라인 구분자 추가
}
allData = builder.toString(); // 전송결과를 전역 변수에 저장
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return allData;
}

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
try {
if ( dialog != null && dialog.isShowing()){
dialog.dismiss();
}
}catch (Exception e){

}

if ( s.equals("없음")){
}else{

}
}
}

getExchangeDataHttp getDataGive = new getExchangeDataHttp();
getDataGive.execute();
}

728x90
반응형