사용한 툴 : 안드로이드 스튜디오
사용 버전 : API 22
*주의 : 2015.11.19 기준 API23 버전에서는 org.apache.http.client.HttpClient를 지원하지 않으니 주의해야 한다.*
안드로이드 스튜디오는 간혈적으로 org.apache.http.client.HttpClient 라이브러리를 import하지 못한다.
따라서 개발자가 Gradle Scripts - build.grade (Module : app) 에 있는 컴파일러에 직접 명시 해주어야 한다.
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.1.0'
compile 'org.apache.httpcomponents:httpclient:4.5' <- 추가
}▲build.grade 맨하단의 dependencies
서버로 요청하는 행동은 인터넷을 사용하기 때문에 android.permmision.INTERNET 퍼미션을 AndroidManifest.xml추가해야한다.
<uses-permission android:name="android.permission.INTERNET"></uses-permission>안드로이드에서 서버로 POST 보내는 순서
1. HttpClient 오브젝트 생성
2. HttpPost 오브젝트 생성
3. POST 파라미터 추가
4. POST 데이터 엔코더
5. HTTP POST 생성 요청
1234567891011121314151617181920212223242526272829 private void sendJsonDataToServer(){String URL = "http://toybox.iptime.org:18080/test";//1HttpClient httpClient = new DefaultHttpClient();//2HttpPost httpPost = new HttpPost(URL);//3List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);nameValuePairs.add(new BasicNameValuePair("ID",m_strId));nameValuePairs.add(new BasicNameValuePair("BeaconMAC",m_strbeaconMac));try {//4httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));//5HttpResponse response = httpClient.execute(httpPost);// write response to logLog.d("Http Post Response:", response.toString());} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (ClientProtocolException e) {// Log exceptione.printStackTrace();} catch (IOException e) {// Log exceptione.printStackTrace();}}cs
혹시 코드를 메인스레드에서 돌렸을 때 예외가 발생한다면 서브 스레드를 통해 값을 전송하면 된다.
(메인스레드가 무거워지는 것을 방지하려고 예외를 발생시킴)
'프로그래밍 > Java, Android' 카테고리의 다른 글
(Java) awt 사용하기(1) - 화면 구성하기 (0) | 2016.07.10 |
---|---|
(안드로이드) Handler 사용하기 (0) | 2016.07.10 |
(안드로이드) 파일처리 - 파일 처리를 이용한 Simple 이미지 뷰어 Application (0) | 2016.07.10 |
(안드로이드) - 이클립스 프로젝트를 안드로이드 스튜디오에서 여는 방법 (0) | 2016.07.10 |
(안드로이드) 파일처리 - SD카드 저장 (0) | 2016.07.10 |