웹서비스를 실제로 이용하기 위한 객체 간의 통신규약으로 인터넷을 통하여 웹서비스가 통신할 수 있게 하는 역할을 담당하는 기술임. SOAP(SOAP Envelope), SOAP 헤더, SOAP 본체, SOAP Encoding Rule, SOAP RPC Representation의 5가지 요소로 구성
xml은 요즘 여러가지로 사용되고 있으니....
xml을 이용한 통신은 여러가지 매리트가 있을 것 같다.
아래 소스는 실제 테스트를 해본 파일들이다.
client.php
<?
include "xmlrpc.inc";
//XML-RPC 서버 선언
$server = new xmlrpc_client("/xmlrpc/testXMLRPCServer.php", "XMLRPC.com", "80");
//XML-RPC 서버로 보낼 메시지
//$message = new xmlrpcmsg("sample.sumAndDifference", array(new xmlrpcval(10, "int"), new xmlrpcval(3, "int")));
$message = new xmlrpcmsg("sample.sumAndDifference", array(new xmlrpcval(10, "int"), new xmlrpcval(3, "int"), new xmlrpcval("reisaiah", "string")) );
$result = $server->send($message);
//결과
if(!$result){
print "<p>Could not connect to HTTP server.</p>";
}else if($result->faultString()){
print "<p>XML-RPC Fault #" . $result->faultCode() . ": " . $result->faultString();
}else{
$struct = $result->value();
$sumval = $struct->structmem("sum");
$sum = $sumval->scalarval();
$differenceval = $struct->structmem("difference");
$difference = $differenceval->scalarval();
$textval = $struct->structmem("text");
$text = $textval->scalarval();
$loginval = $struct->structmem("login");
$login = $loginval->scalarval();
print "<p>Sum: ".htmlentities($sum).", Difference: ".htmlentities($difference).", Text: ".htmlentities($text).", Login: $login::".base64_decode($login)."</p>";
}
echo base64_encode("ㅗㅗㄴ");
?>
server.php
<?
include "xmlrpc.inc";
include "xmlrpcs.inc";
include "../lib/lib.XmlRpcLib.php";
// xmlrpc 기능을 사용하기 위한 모듈 import
function sumAndDifference($params){
//파라미터 파싱
$oneVal = $params->getParam(0);
$one = $oneVal->scalarval();
$twoVal = $params->getParam(1);
$two = $twoVal->scalarval();
$textVal = $params->getParam(2);
$text = $textVal->scalarval();
$login = tttt();
//return 값 만들기
$struct = array("sum"=>new xmlrpcval($one + $two, "int"), "difference"=>new xmlrpcval($one - $two, "int"), "text"=>new xmlrpcval($text, "string"), "login"=>new xmlrpcval(base64_encode($login), "string"));
return new xmlrpcresp(new xmlrpcval($struct, "struct"));
}
//signature and documentation 작성
new xmlrpc_server(array("sample.sumAndDifference"=>array("function"=>"sumAndDifference")));
/*
$sumAndDifference_sig = array(array("struct", "int", "int"));
$sumAndDifference_doc = "Add and subtract two number";
new xmlrpc_server(array("sample.sumAndDifference" => array("function" => "sumAndDifference", "signature" => $sumAndDifference_sig, "docstring" => $sumAndDifference_doc)));
*/
?>
* 자세한 것은
http://phpxmlrpc.sourceforge.net/doc-1.1/
XML-RPC for PHP 에서 확인 하길 바란다.
* include된 파일은 다운 받자~^^
'전공 > 실무' 카테고리의 다른 글
[as3.0]부모, 자식 객체 (0) | 2012.12.06 |
---|---|
[as3.0] getChildAt, getChildByName (0) | 2012.12.06 |
mysql 조회 후 php로 xml 생성 소스 (0) | 2011.08.17 |
[PHP] urlencode(), base64_encode() 함수 (0) | 2011.06.29 |
HTML 과 FLASH 참조 변수 (0) | 2011.05.16 |