웹서비스가 무엇인지, 더 말할 것도 없고 웹서비스 바이두 백과 백과 설명을 참조하십시오.
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은 인증, 헤드셋 등 필요한 경우 공식 문서를 참조할 수 있는 다양한 작업을 지원한다.
'개발 꿀팁 > PHP' 카테고리의 다른 글
PHP가 SESSION의 생존기간을 어떻게 수정하는지 (0) | 2022.07.05 |
---|---|
php 자동 로딩 메커니즘 구현 (0) | 2022.07.05 |
php 설치 확장의 몇 가지 방법 (0) | 2022.07.04 |
PHP를 이용하여 간단한 양식을 작성하다 (0) | 2022.07.04 |
PHP 파일 (0) | 2022.07.04 |