2011-09-15 4 views
0

Drupal을 사용하여 안드로이드 애플리케이션 용 웹 서비스를 만들고 있습니다. 모듈, 테마, 설정 등 Drupal에 대한 기본적인 지식을 가지고 있습니다. 그러나이 "서비스"모듈은 내가 머리에 들어갈 수없는 모듈입니다. 내가 사이트 구축에 탐색 할 때 나는 서비스 6.2 기반 서비스 모듈과 노드 서비스 모듈 이제DRUPAL과 ANDROID를 통합 할 수 없습니다.

을 다운로드 -> 서비스 -> node.get 내가 노드 ID와 필드를 입력 할 수있는 양식을 얻을 이 인을 잘 작동합니다.

하지만 안드로이드에서 응답을받는 방법을 모르겠습니다. xmlRPC 서버를 아직 활성화하지 않았습니다. 인증 또는 세션 ID를 얻을 필요가 없도록 익명 사용자가 서비스 페이지를 방문하도록 설정했습니다.

기본적으로 나는 단지 노드에 대한 이클립스 SDK에서 내 로그 고양이의 응답을보고 싶습니다. 그리고 나는 그 지점으로 이동하도록 설정 될 것입니다.

답변

2

서비스 모듈은 원격 프로토콜 (xmlrpc, soap, rest 등)을 사용하여 타사 앱을 Drupal과 통신 할 수 있습니다.

이를 사용하려면 하나 이상의 엔드 포인트를 정의해야합니다. 설치 이름, 프로토콜, 허용 된 리소스 (노드, 사용자, 파일, 설명 등).

예를 들어, xmlrpc endpoint를 정의하십시오. 그러면 Android의 xmlrpc 클라이언트에서 호출 할 수 있습니다.

XML-RPC는 원격 메소드의 집합을 노출, 가장 흥미로운는 다음과 같습니다

  • user.login -
  • 로그 아웃 - 사용자의 로그, 그것은
  • user.logout를 인수로 사용자 이름과 암호를 취

노드 CRUD 작업 :

  • node.retrieve이 -
  • 을 검색
  • node.create - 갱신 기존 노드
  • node.delete - - 삭제 노드
  • node.index - 노드

같은 CRUD 방법 얻을 목록

  • node.update 새 노드를 만들 다른 Drupal 객체 (파일, 주석, 사용자, taxonomy_terms)에 존재하면 "node"만 객체 이름으로 바꿉니다. 예 : "file.create"- 파일 "file.index"만들기 - 파일 목록 등을 검색합니다.

    권한이 필요하면 먼저 "user.login"을 호출해야합니다. 가 성공하면 은 리턴 된 메소드 구조의 sessid 및 session_name 값을 저장합니다.

    그런 다음 세션을 식별하기 위해 모든 후속 호출에 쿠키로 값

    session_name+"="+sessid 
    

    을 보낼 수 있습니다. 또한, Drupal 서비스 엔드 포인트 구성에서 "세션 인증"체크 상자를 사용 가능하게해야합니다. 이를 사용하지 않으면 엔드 포인트에 대한 모든 요청이 익명의 사용자로 실행됩니다.

    자신의 xmlrpc 서비스를 만들려면 모듈에서 hook_xmlrpc를 정의하고 일련의 메서드를 노출해야합니다.

  • +0

    다시; 귀하의 답변에 서명이나 블로그 링크를 포함시키지 마십시오. –

    +0

    내 블로그 게시물에는 서비스 모듈을 구성하는 방법에 대한 추가 정보가 포함되어 있습니다. 스크린 샷과 상세한 텍스트를 보낼 수 없습니다. 이것은 왜, 나는 (스패밍을 위해 아닙니다) 연결을 추가했다. –

    +0

    나는 당신의 블로그 포스트를 보았다. 그 정보가 있다면, 찾기가 매우 어려웠습니다. –

    0

    나는 이것이 당신이 찾고있는 것인지 확실하지 않지만 HttpClient를 사용하여 서비스에 액세스 할 수 있습니다. 자세한 내용은 this 답변을 참조하십시오. Drupal 전문가가 아니기 때문에 이러한 "서비스"모듈을 활성화 했으므로 xmlRPC를 활성화 또는 비활성화해야하는지 확실하지 않습니다. 약간의 연구 (here)를 사용하여 기본적으로 Drupal에서 xmlRPC를 사용 설정하고 XML-RPC 클라이언트를 Android 애플리케이션에 가져 와서 사용하기 시작하는 유용한 정보를 찾았습니다.

    +0

    저는 httpclient 메소드를 사용해야한다고 생각하지 않습니다. 나는 XML 파싱과 물건에 대해 매우 잘 알고 있으며 www.myurl.com/api.php?param1=value1¶m2=value2와 같은 URL의 URL과 함께 플레이 할 수 있지만이 내용은 다릅니다. www.myurl.com과 같은 url을 호출 한 다음 node.get과 같은 방법으로 개별적으로 메소드를 호출하고 인수를 별도로 pasing하는 것과 같습니다. 이 모든 것이 간단한 URL에 없습니다. (그렇지 않으면 삶의 진흙은 쉬어졌습니다. – abhishek

    +0

    안녕하세요,이 링크를 발견했습니다. http://civicactions.com/blog/2010/may/02/tutorial_code_developing_apps_iphoneipadandroid_using_drupal_base_system 확인하고 댓글을 남겨주세요. – abhishek

    +0

    node.get is 아마 mysample.com/node.get 같은 URL - 데이터 POST가 필요합니다. – Jack

    0

    시작하기위한 몇 가지 예는 서비스 설명서 (http://drupal.org/node/783722http://drupal.org/node/790416)를 참조하십시오. 나는 이것들이 서비스 모듈을 설정하고 사용하는 방법에 대한 좋은 소개를 발견했다.

    +0

    drupal 프레임 워크에서 node.get() 메서드가 제대로 작동하고 있으므로 서버 모듈을 활성화해야합니까? 내게 실제로 원하는 데이터를 제공하고있다. 만약 내가 복잡 해지고 그냥 서비스 모듈 및 노드 서비스를 활성화하고 URL을 가진 urlConnection을 만들지 않으면 http://mydomain.com/drupal-6.19/admin/build/services를 호출 한 다음 node.get 메서드를 호출하고 연결이 설정되면 어떻게 든 node.get 메서드를 트리거 할 수 있습니까? – abhishek

    +0

    이 링크는 http://civicactions.com/blog/2010/may/에서 확인할 수 있습니다. 02/tutorial_code_developin g_apps_iphoneipadandroid_using_drupal_base_system 비슷한 일을 더 간단하게해야하지만 URL에서 node.get을 호출하는 방법을 모른다. – abhishek

    관련 문제