많은 조직에서 웹 애플리케이션 환경으로 Apache와 PHP를 채택했습니다. 웹 서비스 모드에서 PHP를 채택하는 것은 어려워 보일 수 있습니다. 그러나 실제로 NuSoap을 사용하면 PHP를 사용하여 SOAP 클라이언트와 서버를 쉽게 구축할 수 있습니다.
NuSoap과 PHP를 사용하여 웹 서비스를 구축하는 방법을 설명하기 위해 간단한 예를 들어보겠습니다. 이 예제 애플리케이션은 PHP 웹 서비스 서버와 클라이언트로 구성됩니다. 문자열의 문자 순서를 뒤집고 두 숫자의 합을 구하는 두 가지 기능을 구현합니다.
PHP SOAP 서버 PHP와 NuSoap을 사용하면 SOAP 서버를 설정하는 것이 매우 쉽습니다. 기본적으로 웹 서비스에 노출하려는 기능을 작성하고 NuSoap에 등록하기만 하면 됩니다.
좋습니다. PHP SOAP 서버 설정을 완료하려면 두 가지 단계가 더 필요합니다. 먼저 PHP 코드에서 NuSoap 개체의 인스턴스를 생성한 다음 HTTP POST 메서드를 사용하여 처리를 위해 원시 데이터를 NuSoap에 전달해야 합니다. 간단하게 들리나요? 먼저 Listing 1을 살펴보자.
목록 1: 비누펑크.php
<?
require_once('nusoap.php');
함수 역방향($str){
$retval = "";
if(strlen($str) < 1) {
return new 비누_fault('클라이언트','','잘못된 문자열');
}
for ($i = 1; $i <= strlen($str); $i++) {
$retval .= $str[(strlen($str) - $i)];
}
$retval을 반환합니다.
}
함수 add2numbers($num1, $num2) {
if (trim($num1) != intval($num1)) {
return new 비누_fault('클라이언트', '', '첫 번째 숫자가 잘못되었습니다.');
}
if (trim($num2) != intval($num2)) {
return new 비누_fault('클라이언트', '', '두 번째 숫자가 잘못되었습니다.');
}
반환($num1 + $num2);
}
?>
목록 1은 Soapfunc.php의 소스 파일을 제공합니다. 이 파일에는 SOAP 프로토콜을 통해 웹 서비스에 노출하려는 두 가지 기능(웹 서비스 애플리케이션의 핵심인 reverse 및 add2numbers)이 포함되어 있습니다. reverse 함수는 하나의 인수를 사용하여 문자열의 문자 순서를 반대로 바꾸어 반환합니다.
목록 2: 비누서버.php
<?
require_once('nusoap.php');
include('soapfunc.php');
$soap = 새 비누_서버;
$soap->register('역방향');
$soap->register('add2numbers');
$soap->서비스($HTTP_RAW_POST_DATA);
?>
목록 2에서는 NuSoap 등록 함수의 사용과 SOAP 핸들러 호출을 보여줍니다. 보시다시피, 두 함수(soapfunc.php에)를 등록하고 POST 데이터를 비누_서버 객체에 전달하는 것은 비누_서버 객체의 새 인스턴스를 생성하는 것만큼 쉽습니다. Soap_server 객체는 POST 데이터를 검사하고 어떤 함수를 호출할지 결정한 다음 매개변수를 이 PHP 함수에 전달합니다. PHP 함수에서 반환된 데이터는 SOAP 응답으로 다시 패키징되어 서비스를 요청하는 SOAP 클라이언트에 전달됩니다.
PHP SOAP 클라이언트 이제 NuSoap과 PHP를 사용하여 SOAP 서버를 만들었으므로 테스트해야 합니다. SOAP 서버 프로그램을 구축한 것처럼 NuSoap을 사용하여 PHP에서 SOAP 클라이언트 프로그램을 생성할 수 있습니다. 목록 3은 PHP SOAP 클라이언트 프로그램의 소스 프로그램을 제공합니다.
NuSoap과 PHP를 사용하여 SOAP 서버를 만들었으므로 이제 이를 테스트해야 합니다. SOAP 서버 프로그램을 구축한 것처럼 NuSoap을 사용하여 PHP에서 SOAP 클라이언트 프로그램을 생성할 수 있습니다. 목록 3은 PHP SOAP 클라이언트 프로그램의 소스 프로그램을 제공합니다.
목록 3: 비누클라이언트.php
<?
include('nusoap.php');
$client = new Soapclient('http://localhost/soapserver.php');
$str = "이 문자열은 반전됩니다.";
$params1 = 배열('str'=>$str);
$reversed = $client->call('reverse',$params1);
echo "'$str'을 뒤집으면 '$reversed'가 됩니다.<br>n"
$n1 = 5;
$n2 = 14;
$params2 = array('num1'=>$n1, 'num2'=>$n2);
$add = $client->call('add2numbers', $params2);
echo "$n1과 $n2를 추가하면 $추가됩니다<br>n";
?>
SOAP 서버에서 PHP 클라이언트 프로그램을 사용하려면 세 가지 작업을 수행해야 합니다. 먼저, 비누클라이언트 객체를 생성해야 합니다. Soapclient 객체는 매개변수와 SOAP 프로토콜의 마샬링을 처리합니다. Soapclient에는 URL이어야 하는 매개변수가 필요합니다. 이 URL은 실제 SOAP 서버의 HTTP 엔드포인트 또는 WSDL 설명을 가리킬 수 있습니다. 우리의 경우에는 PHP SOAP 서버를 가리키는 URL입니다.
매개변수가 필요한 함수를 호출할 때 먼저 키-값 쌍 세트가 포함된 매개변수 배열을 만들어야 합니다. 키는 매개변수의 이름이고, 값은 매개변수의 값입니다.
함수를 호출해야 하는 경우 Soapclient 객체를 사용하여 함수를 호출하고 두 개의 매개변수를 전달합니다. 첫 번째 매개변수는 호출하려는 함수의 이름이고, 두 번째 매개변수는 SOAP 함수의 매개변수를 포함하는 배열입니다. 호출 함수는 호출한 SOAP 함수의 값을 반환합니다.
이 예제를 실행하려면 웹 브라우저에 비누클라이언트.php에 대한 URL을 입력하기만 하면 됩니다. 다음과 유사한 출력이 표시됩니다.
'This string will be reversed'를 반대로 하면 'desrever eb lliw gnirts sihT'가 됩니다. 5와 14를 더하면 19가 됩니다.