개발 꿀팁/PHP

php soap에 대한 자세한 정보 웹 서비스 구현

Jammie 2022. 7. 4. 17:34
반응형

웹서비스가 무엇인지, 더 말할 것도 없고 웹서비스 바이두 백과 백과 설명을 참조하십시오.
soap은 웹 서비스 구현에 사용되는 일종의 기술 규범에 속하는 프로토콜이다.
웹 서비스의 인터페이스 구현에는 wsdl 문서를 생성해야 하는 방식과 그렇지 않은 두 가지 방식이 있다.wsdl 문서를 생성하는 방식이 필요하다.
실제 작업을 하기 전에 자신의 환경을 점검하고 soap 지원 여부를 확인한 후 php.ini 사양을 수정하십시오.파일, "soap.wsdl_cache_enabled" 항목을 0으로 설정합니다.

wsdl 문서를 생성할 필요가 없는 방법
이 방식은 wsdl 문서를 생성해야 하는 방식보다 간단하지만, 일부 방법은 지원하지 않습니다. 예를 들어, 가져오기조작방법의 __getFunctions(), 자신의 선택에 적합한지 여부.

서버 끝 ts1.php

<?php
class testA{
        public function sayHi($str){
                return 'hi,'.$str;
        }

        public function add($a,$b){
                return $a+$b;
        }
}

$ss = new SoapServer(null, array('uri'=>'sampleA'));
$ss->setClass('testA');
$ss->handle();

서버 끝 ts1.php 파일에서 클래스를 만든 다음 SoapServer를 만들고 설정을 합니다. uri는 일관성을 보장하기 위해 사용합니다.

클라이언트 끝 tc1.php

<?php
$client = new SoapClient(null, array(
        'location'=>'http://10.0.0.232:1075/soap/ts1.php',
        'uri'=>'sampleA'
        ));

echo $client->sayHi('Taylor,Swift');
echo "<br/>";
echo $client->add(1,2);

클라이언트 측에서는 Soap Client 개체를 사용하여 요청을 하고 location은 요청의 구체적인 주소를 나타내며 uri의 값은 서버 측과 일치하며 일관성을 보장한다.
브라우저에 http://10.0.232:1075/soap/tc1.php를 입력하여 접속하면 다음과 같은 출력을 볼 수 있습니다.

이 방식은 wsdl 문서를 생성할 필요가 없어 간편하지만 마찬가지로 wsdl 문서가 없기 때문에 클라이언트도 관련 조작 방법을 얻을 수 없으며 wsdl 문서를 생성하는 방식으로 클라이언트 측에서 하나의 요청 주소로 서버 측에서 공개한 모든 인터페이스를 개별적으로 얻을 수 있다.

wsdl 문서 생성 방법
wsdl 문서는 xml 문서로서, 일반적으로 공개된 클래스 라이브러리인 SoapDiscovery를 사용하여 생성할 수 있으며, SoapDiscovery.class.php를 직접 다운로드할 수 있는 바이두 웹 공유 기능을 사용할 수 있습니다.

서버 끝 ts2.php

<?php
define('WSDL_FILE','ts2.wsdl');
if(!file_exists(WSDL_FILE)){
        require_once('SoapDiscovery.class.php');
        $sd = new SoapDiscovery('testD', 'liang');
        $str = $sd->getWSDL();
        file_put_contents(WSDL_FILE, $str);
}

$ss = new SoapServer(WSDL_FILE);
$ss->setClass('testD');
$ss->handle();

class testD{
        public function sayHello($world){
                return 'hello,'.$world;
        }

        public function add($a, $b){
                return $a+$b;
        }
}

server측의 ts2.php는 먼저 필요한 wsdl 파일의 존재여부를 검출하고, 존재하지 않을 경우 SoapServer 객체를 작성하고, 설정하며, wsdl 문서를 사용하므로 newSoapServer의 경우 wsdl 문서의 주소를 그대로 적으면 됩니다.

클라이언트 끝 tc2.php

<?php
$client = new SoapClient('http://10.0.0.232:1075/soap/ts2.wsdl');

print_r($client->__getFunctions());

echo "<br/>";

echo $client->sayHello('Avril Lavigne');

echo "<br/>";

echo $client->add(9,8);

클라이언트 쪽의 tc2.php 파일에서 Soap Client 개체를 만들 때 요청한 wsdl 문서의 주소를 직접 채웁니다. 이 문서는 ts2.php에서 생성됩니다.
서버 쪽의 ts2.php와 클라이언트 쪽의 tc2.php가 이미 작성돼 있는데 지금 ts2.php를 요청해야 하는데 왜 요청했나?우선 ts2.php를 통해 wsdl 파일을 만들어야 하기 때문에 물론 처음 할 때만 해야 하고 wsdl 파일이 만들어지면 그럴 필요가 없다.(후기에 ts2.php를 수정했다면 오래된 wsdl 문서를 삭제하고 새로운 wsdl 문서를 생성하기 위해 ts2.php를 다시 요청해야 한다.)

1, 요청ts2.php는 wsdl 문서 http://10.0.0.232:1075/soap/ts2.php를 생성하는 데 사용된다.

2, tc2.php를 요청하여 반환 결과를 확인합니다

3. 브라우저를 통해 wsdl 문서의 주소에 직접 접속하면 wsdl 문서의 구체적인 내용을 볼 수 있습니다.

hp soap은 인증, 헤드셋 등 필요한 경우 공식 문서를 참조할 수 있는 다양한 작업을 지원한다.

반응형