전공/실무

xmlrpc [soap] 실 사용 방법 소스 바로 적용 가능~^^

하루는노력 2011. 8. 17. 17:32
728x90
반응형
[soap]
웹서비스를 실제로 이용하기 위한 객체 간의 통신규약으로 인터넷을 통하여 웹서비스가 통신할 수 있게 하는 역할을 담당하는 기술임. 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된 파일은 다운 받자~^^


반응형
LIST

'전공 > 실무' 카테고리의 다른 글

[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