제가 속해 있는 단체의 어플을 개발하고자 하는데...
어플 속에 이 기능을 넣고 싶은데.
1. 스마트 폰 어플에 넣을 수 있는 소스를 구하지 못했습니다. (여러 책을 보아도, 구글 등에서 검색해도 보이지 않습니다. )
edittext 에서 입력된 데이타를 해당 웹서버에 전달해야 하는데. 이에 대한 소스 나 정보 부탁드립니다.
2. 단지 웹서비스를 이용해야 한다고 나오는데...
개인 홈페이지에 간단하게 게시판을 작성하고자 합니다. (환경은 mysql, php, apache - 물론 호스팅을 받고 있음)
테이블을 만들고, 간단하게 php로 게시판을 생성해야 함을 알고 있습니다.
공지사항을 다 읽었음
네. 답변감사합니다.
get 방식으로 되어 있고, 그 소스에서 받아서 한것은 아니지만 다른 곳에서 가지고 온 소스가 링크주소에 있는 것과 거의 동일합니다.
문제는 마지막 부분의 HttpResponse response = httpclient.execute(httppost); 이것이 처리가 되지 않는 다는 것입니다.
public class postData extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button PostBt = (Button)findViewById(R.id.button1);
PostBt.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
//Toast.makeText("POST", Toast.LENGTH_SHORT).show();
postData();
}
});
}
public void postData() {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.wizapp.kr/app/test.php");
try { // Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
Log.i("com","list");
nameValuePairs.add(new BasicNameValuePair("name", "a12345"));
nameValuePairs.add(new BasicNameValuePair("latitude", "123"));
nameValuePairs.add(new BasicNameValuePair("longitude", "23"));
Log.i("com","add");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));
Log.i("com","set2");
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
Log.i("com","resp");
// UrlEncodedFormEntity entityRequest = new UrlEncodedFormEntity(nameValuePairs, "UTF-8");
// httppost.setEntity(entityRequest);
// httpclient.execute(httppost,responseHandler);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
Log.i("com","error1");
} catch (IOException e) {
// TODO Auto-generated catch block
Log.i("com","error2");
}
}
}
이렇게 질문으로 나올 답은 아닌거 같습니다.
서버 구축하고 디비는 다룰줄 아시나요? 웹서비스로 데이타 날리면 받아서 데이터 저장할수있는 웹서비스부터 만들어야 할텐데
그러려면 Xml파싱하는거 부터 WSDL 이나 kSoap등 알아보시면 도움될만한 예제를 찾을수 있을겁니다.
일단, 개인적으로 스마트폰 어플에서 데이타를 전송해서 서버에 저장되는 것만 해결하길 원합니다.
서버의 데이타베이스에서 가지고 오는 것은 php 문서를 만들고, 거기에서 DB에 있는 데이타를 가지고 와서 html 형태로 어플에서 가지고 와서 파싱해서 원하는 정보를 뽑아 내면 된다고 알고 있습니다.
ksoap 의 경우 닷넷에서만 된다고 들었습니다.
질의의 요지는 원하는 데이타를 서버의 데이타베이스에 저장하느냐가 관건입니다.
httpPost를 이용하여 파라미터 값을 웹서버로 보낼수 있습니다.
기본적으로 insert기능을 수행할수있는 웹페이지를 우선 만들어 놓으시기 바랍니다.
주소를 이용하여 post요청을 보낼때 nameValuePair라는 객체를 이용하여 파라미터값을 저장할수있습니다.
해당 객체를 여러개 묶은 vector나 arrayList를 post요청시 추가시켜서 보내면 요청은 끝입니다.
좀 이해를 쉽게 해드리자면 웹사이트에 접속을 하기위해 주소가 필요합니다.
만약 insert를 위한 페이지 주소가 http://www.insertdb.com/insert.php 라고 한다면
해당 페이지에 파라미터 값으로 insert를 수행하기 위한 값들을 전달해주면 됩니다.
예를 들어 no=1, title=디비업로드, body=등록완료 라는 값이 필요하다면
get방식으로 http://www.insertdb.com/insert.php?no=1&title=디비업로드&body=등록완료
이런식의 주소로 접속하면 되겠지요
?뒤의 파라미터들이 NameValuePair에 들어가는 값이 되는것입니다.
자세히 알고 싶으시면 도큐먼트를 보시는게 좋을겁니다. 아니면 구글에서도 관련 소스가 있을테니 찾아보시기 바랍니다.
네 답변감사합니다. 현재 get 방식으로 인터넷익스플로러에서 처리하는 것이 해결되었습니다. (정상적으로 데이타가 입력됩니다.)
문제는 POST 방식으로 안드로이드의 에뮤레이터에서 하면 데이타가 입력되지 않는다는 것입니다.
public void postData() {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.wizapp.kr/app/test.php");
try { // Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3);
Log.i("com","list");
nameValuePairs.add(new BasicNameValuePair("name", "a12345"));
nameValuePairs.add(new BasicNameValuePair("latitude", "123"));
nameValuePairs.add(new BasicNameValuePair("longitude", "23"));
Log.i("com","add");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));
Log.i("com","set2");
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
Log.i("com","resp");
// UrlEncodedFormEntity entityRequest = new UrlEncodedFormEntity(nameValuePairs, "UTF-8");
// httppost.setEntity(entityRequest);
// httpclient.execute(httppost,responseHandler);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
Log.i("com","error1");
} catch (IOException e) {
// TODO Auto-generated catch block
Log.i("com","error2");
}
}
위의 소스를 실행하면... error2 라고 로그가 출력됩니다. 마지막에서 response 객체가 실행되지 않는 것 같습니다. 확인 부탁드립니다.
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3);- 코드 정정 : List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();


