1. 메니페스토 파일에 인터넷 사용권한을 추가한다.
<uses-permission android:name = "android.permission.INTERNET"/>
2. 안드로이드에서 내부적으로 네트워크 사용에 대해 엄격히 제한하고
있기 때문에를 사용하기 위해서는 강제로 네트워크를 사용하겠다는
정책을 추가해주어야한다.
StrictMode.ThreadPolicy policy
= new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
3. 웹서버로 데이타를 전송하기 위해서는 비동기전송방식을 사용하는 것이 좋다. 왜냐하면 웹데이타를 가져올 때 문제가 발생하게 되면 앱 전체가 먹통될 수 있다. 따라서 이를 피하기위해서는 안전한 비동기방식을 사용하는 것이 좋다. 비동기 방식을 사용하기 위해서는 AsyncTask를 이용하여 데이타를 전송하여야한다.
class HttpPostAsyncTask extends AsyncTask<String, Integer, Long>{ @Override protected Long doInBackground(String... params) { String username = params[0]; String idvalue = params[1]; String contact = params[2]; String address = params[3]; try { HttpClient client = new DefaultHttpClient(); String postUrl = "http://test.mireene.com/receiveData.php"; HttpPost post = new HttpPost(postUrl); //전송될 데이터 값 List params2 = new ArrayList(); params2.add(new BasicNameValuePair("username", username )); params2.add(new BasicNameValuePair("idvalue", idvalue )); params2.add(new BasicNameValuePair("contact", contact )); params2.add(new BasicNameValuePair("address", address )); UrlEncodedFormEntity ent = new UrlEncodedFormEntity(params2,HTTP.UTF_8); post.setEntity(ent); HttpResponse responsePost = client.execute(post); HttpEntity resEntity = responsePost.getEntity(); if (resEntity != null) { Log.w("Response", EntityUtils.toString(resEntity)); } } catch (MalformedURLException e) { // } catch (IOException e) { // } return null; } }
4. 마지막으로 전송하고자 하는 곳에서 인스턴스를 만들어 다음 로직을 사용하면 된다.
String strCurDate=getCurrentDate(); HttpPostAsyncTask task=new HttpPostAsyncTask(); task.doInBackground(value1,value2,value3,value4);
감사합니다. 제가 이번에 앱을 만들게 됬는데 post때문에 3일동안 시간을 날렸는데
답글삭제이글을 보고 바로 해결했네요. 감사합니다 ^^
글쓴이님 ! 제가 안드로이드 post부분때문에 2주쨰 고생하고있는데 소스전체파일좀 받을수있을까요 ??
답글삭제hss57125471@gmail.com 입니다 많은포스팅보고따라햇는데 저는 실행이되질않네여..
답글삭제