2012-02-03 2 views
2

Android 개발에 대해 배우기 시작했습니다. 자연에서 조금 벗어난 경우 실례합니다. 내 웹 사이트에서 데이터베이스와 상호 작용하는 앱을 만들고 싶습니다. 어떤면에서는 다른 것을 먹이는 것입니다. 그래서. 내 서버와 상호 작용하는 가장 좋은 방법이 무엇인지 알아 내려고 노력 중입니다. 나는 응용 프로그램이 브라우저와 같은 환경에있는 응용 프로그램을 원하지 않습니다. DB를 공유하고 기능을 공유하는 사이트와 독립적으로 작동하는 전체 응용 프로그램을 개발하고 싶습니다. 그렇다면 최선의 접근 방법은 무엇입니까?Android 앱 개발 및 웹 서버 상호 작용

기본적으로 JSON/XML을 통해 상호 작용하는 서버에서 php 파일을 게시/가져올 수 있으므로 앱을 서버에 연결하는 더 나은 방법이 있습니까? 요청을하는 모든 IP에 데이터베이스를 열어야합니다.

의견 및 제안을 찾고 있습니다. 나는 이것이 안드로이드 개발과 모범 사례에 익숙하다는 것을 알기를 기대하는 모든 사람들을 생각한다. 내가 할 수있는 것처럼 블로그와 다른 모든 것들을 서핑 해 왔지만 의견은 50/50 인 것으로 보인다.

답변

3

우리는 백엔드에서 데이터베이스를 선택하는 적절한 RESTful 웹 API (PHP, RoR 등)를 선택하면 어떤 용도로든 사용할 수있는 유용한 인터페이스를 제공한다는 것을 알게되었습니다 (자신의 웹 사이트, 모바일 앱 등).

다음은 안드로이드 앱이 단순히 HTTP 요청 인 RESTful API와 상호 작용하는 문제입니다. 그것들은 도우미 클래스로 캡슐화되어 그것들을 똑바로 만들 수도 있습니다.

+2

브라이언에 동의합니다. 데이터베이스 백업 웹 사이트에서 작동하는 Android 앱을 개발했습니다. (우리는 ROR을 사용한다). 우리는 RESTful API를 사용하고 JSON을 사용한다. JSON을 사용한다면 GSON을 추천합니다. 필자는 JSON android 파서에 대한 경험이 부족했습니다. 지금까지 RESTful API에 이르기까지 그들은 필요한 것을 얻을 수 있어야한다. 우리는 웹 사이트와 동일한 방법으로 데이터베이스와 완전히 상호 작용할 수 있습니다. 나는 HTTP 요청에 대해 안드로이드 아파치 프레임 워크를 사용한다. 왜냐하면 다시 빌드 된 것은 매우 강력하지 않기 때문이다. http://code.google.com/p/google-gson/ http://hc.apache.org/downloads.cgi – daltoniam

+0

아파치 프레임 워크와 gson을 어디에 넣을 까? 함께 일할 웹 서버에 상주합니까? 아니면 시작할 준비가되었을 때 안드로이드 파일에서 마무리합니다. – chris

+0

링크 된 외부 라이브러리로 안드로이드 앱을 사용할 수 있습니다. – daltoniam

0

내 경험을 바탕으로, 안드로이드 : 편안하고 일을위한 최상의 프레임 워크는 다음과 같습니다 클라이언트 관점에서 Spring Android

, 그것은 보안 : 편안하고 서비스에 액세스하는 데 필요한 모든 도구를 제공합니다. 스프링이기 때문에 대부분의 보일러 플레이트 http 코드에서 멋진 추상화를 제공합니다. 예를 들어, json을 반환하는 GET을 수행하는 깨끗한 방법을 제공 한 다음이를 POJO에 직렬화합니다. 예를 들어

는 :

RestTemplate restTemplate = new RestTemplate(); 

// Add Jackson JSON Message Converter to Template 
restTemplate.setMessageConverters(
    new ArrayList<HttpMessageConverter<?>>() { 
     {    
      add(new MappingJacksonHttpMessageConverter()); 
     } 
    } 
); 

// Simple Conversion - pojo is now populated 
MyPojo pojo = restTemplate.getForObject(url, MyPojo.class); 
4

나는 당신이 정말로 무슨 일이 일어나고 있는지 이해하려면 HTTP GET 및 포스트에 당신을 도울 거기 안드로이드에 대한 라이브러리는, 그러나, 거기에 확신이 단지입니다 필요한 수업을 직접하기 위해서는 두 가지 수업을 이해해야합니다.

먼저 HttpClient, HTTPGet, HTTPPost 및 HTTPResponse에 대해 알아보십시오. Android의 이후 버전 중 일부는 다른 멋진 클래스도 있지만,이 네 가지 클래스는 시작하기 만하면됩니다.

당신은 같은 것을 할 필요가 : 당신이 (물론 실제 URL로)이 문제를 디버깅 할 경우

HttpClient client = new DefaultHttpClient(); 
HttpGet request = new HttpGet("http://www.myurl.com/api_name"); 
HttpResponse response = client.execute(request); 

, 당신은 알 수 있습니다 그 client.execute 동안 정지의 앱 종류의()를. 요청이 실제로 실행되고 앱이 응답을 기다리는 지점입니다. 실제로 응답을 받으면 데이터를 가져 오는 것이 그리 어렵지 않습니다.

이 내용을 이해하면 백그라운드 작업을 수행하는 데 끝없이 유용한 AsyncTask에 대해 알고 싶을 것입니다. 여기에서 설명서를 찾을 수 있습니다 : http://developer.android.com/reference/android/os/AsyncTask.html 상단에이 권리를 사용하는 방법에 대한 좋은 예가 있습니다.

이 두 개념을 함께 사용하면 비동기 HTTP 요청을 수행 할 수 있습니다.기본적으로 AsyncTask의 doInBackground에 실제 HTTP 실행 코드를 넣으십시오. doInBackground의 끝에서 응답을 반환 한 다음 AsyncTask의 onPostExecute에서 데이터로 원하는 작업을 수행합니다.

0

서버의 PHP와 요청/응답의 JSON이 문제가된다. 그러나 완벽하게 만드는 것은 까다로울 수 있습니다.

안드로이드 측면에서 요청/응답 클래스가 작은 경우 (예 : SaveNoteToServerRequest, SaveNoteToServerResponse 클래스가 요청/응답에 필요한 필드가있는 일반 Java 객체 인 경우) 유용합니다. 그런 다음 GSON과 같은 라이브러리를 사용하여 요청 객체를 JSON으로 변환하고 HTTP 응답을 JSON에서 응답 객체로 변환 할 수있다.

PHP 쪽에서는 응답 객체에 대한 작은 클래스를 만들고 마지막에 json_encode를 만들 수 있습니다.

그런 식으로 JSON 객체를 직접 조작하지 않고, 평범한 자바 객체 또는 PHP 클래스를 사용하는 것이 대부분입니다.

희망이 있습니다.