상세 컨텐츠

본문 제목

XML RPC 예 (PHP)

.Net General/.Net XML-RPC

by 탑~! 2011. 11. 17. 10:42

본문


xmlrpc는 xml포맷의 데이터를 이용하여 원격 서버의 프로시저(procedure)를 실행하는 방법중의 하나이다.

 

 

[client code]

$site = "dmain";

$location = "/path/server.php";

 

list($sucess, $response) = XMLRPC_request(

    $site, $location, 'post.Info', array(XMLRPC_prepare($_GET['key']), 'pie')

);

 

// server name, URI, post.Info(서버의 메소드) 보낸다.

// array(XMLRPC_prepare($_GET['key'])는 메소드가 사용할 매개변수를 배열로 넘긴다.

// pie는 에이전트 이름으로 별의미가 없다.

// 넘긴후 리턴값으로 받는 $success로 성공, 실패 여부를 판단하고, 성공시 $response 배열로

// 실행결과를 받는다.

 

 

[server code]

// service 해줄 함수(메소드)들이 정의된 파일

include("정의된 api.php");

 

 

// client에서 post로 넘어온 데이터를 변수에 할당하고 주고 받을 값의 크기 제한은 php.ini의

// POST관련 제한에 종속

$xmlrpc_request = XMLRPC_parse($GLOBALS['HTTP_RAW_POST_DATA']);

 

 

// client에서 보내온 값중에서 사용할 함수 이름을 얻는다. 이 함수는 web_service_api.php에

// 정의 되어 있어야 한다.

$methodName = XMLRPC_getMethodName($xmlrpc_request);

 

 

// 함수에서 사용할 parameter를 배열로 받는다. 여기서는 $key

$params = XMLRPC_getParams($xmlrpc_request);

 

// Error check - 함수가 있는지 없는지 체크

if(!isset($xmlrpc_methods[$methodName]))

{

    $xmlrpc_methods['method_not_found']($methodName);

}

else

{

// 함수가 있으면 실행후 xml_rpc포맷으로 client에 전송

    /* Call the method - notice $params[0] not just $params as the documentation states. */

    $xmlrpc_method[$methodName]($params[0]);

}

 

 

[api code]

// xmlrpc메소드에 대응하는 PHP함수 이름 정의

$xmlrpc_methods = array();

 

 

// 우편번호 정보(클라이언트에서는 post.Info로)

$xmlrpc_methods['post.Info'] = post_Info;

 

function post_Info($key="")

{

    $key = trim($key);

   

    $query = "select * from 우편번호_테이블 where 구군필드 like '%" . $key . "%' or 동필드 like '%" + $key . "%'";

 

    $result = mysql_query($query);

 

    if($result)

    {

        while($row = mysql_fetch_array($result))

        {

            $post['code'] = $row['우편번호'];

            $post['sido'] = $row['시, 도명'];

            $post['gugun'] = $row['구, 군명'];

            $post['dong'] = $row['동명'];

            $post['bunji'] = $row['번지'];

         

            $post_all[] = $post; 

        }

 

        XMLRPC_response(XMLRPC_prepare($post_all), KD_XMLRPC_USERAGENT);

    }  

    else

    {

        //Error일경우 반환

        XMLRPC_error("1", "post_Info()에러 : 주소록을 읽을 수 없습니다. : " . mysql_error() . "\nQuery : " . $query, KD_XMLRPC_USERAGENT);

    }

}


출처 : http://blog.naver.com/9namy

'.Net General > .Net XML-RPC' 카테고리의 다른 글

overview (from Apache)  (0) 2011.11.17
XML RPC Spec  (0) 2011.11.17
XML RPC 예 (PHP)  (0) 2011.11.17
XML RPC 예 (PHP)  (0) 2011.11.17
XML RPC 란 ?  (0) 2011.11.17

관련글 더보기