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
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 |