상세 컨텐츠

본문 제목

XML RPC 예 (PHP)

.Net General/.Net XML-RPC

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

본문

◈ php compile시 --with-xmlrpc 옵션추가로

xmlrpc_server_call_method, xmlrpc_server_create, xmlrpc_server_register_method 등의 함수가 사용가능해야한다.

이 옵션 때문에 특별한 클래스 추가 없이 간단하게 서버 클라이언트를 만들수 있다.

 

[server]

 

<?

// method

function uptime_func($method_name, $params, $app_data)

{

    return `uptime`; // shell 명령어 uptime의 실행결과 리턴

}

 

function greeting_func($method_name, $params, $app_data)

{

    $name = $params[0];

    return "Hello, $name, How are you today?";

}

 

//--with-xmlrpc 옵션으로 php를 컴파일해야만 아래 함수가 활성

$xmlrpc_server = xmlrpc_server_create();

 

//함수를 등록

xmlrpc_server_register_method($xmlrpc_server, "greeting", "greeting_func");

xmlrpc_server_register_method($xmlrpc_server, "uptime", "uptime_func");

 

$request_xml = $HTTP_ROW_POST_DATA;

 

$response = xmlrpc_server_call_method($xmlrpc_server, $request_xml, '');

 

print $response;

 

xmlrpc_server_destroy($xmlrpc_server);

?>

 

 

[client]

 

//php client --with-xmlrpc 옵션 활성화된 어떤 외부 서버에서도 가능

<?

    include("utils.php");

   

    $host = "도메인명";

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

 

    $result = xu_rpc_http_concise(

                   array(

                       'method' => "uptime",

                       'host' => $host,

                       'uri' => $uri,

                       'port' => 80

                      )

    );

 

    print $host . "시스템 현황(UPTIME) : " $result;

?>

 

  client에서 server로 uptime이라는 메소드를 날리면 server.php에서 uptime_func함수로 결과값을 리턴한다.

  위에서 utiles.php는 xu_rpc_http_concise함수를 불러쓰기 위해서 삽입한다.

 

  아직 함수인자로 한글을 넘길경우 어떤 한글은 되고 어떤 경우는 제대로 encode, decode가 되지 않는다.

 

  한글로된 인수에 공백 문자가 있으면 아직 xml parser가 euc-kr을 지원하지 않기 때문에 깨지게 된다. 다만, 공백 문자가 없고, 한글로만 이루어저있다면 3byte씩 끊어서 파싱해도 깨지지 않고,

url_encode()하거나 base64를 이용해서 사용하면 상관이 없다.


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

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

XML RPC 예 (PHP)  (0) 2011.11.17
XML RPC 예 (PHP)  (0) 2011.11.17
XML RPC 란 ?  (0) 2011.11.17
XML RPC 관련 Site  (0) 2011.11.17
XML-RPC HOWTO  (0) 2011.11.17

관련글 더보기