>  기사  >  백엔드 개발  >  웹 서비스 인터페이스 서비스를 구현하는 PHP SOAP에 대한 자세한 설명

웹 서비스 인터페이스 서비스를 구현하는 PHP SOAP에 대한 자세한 설명

藏色散人
藏色散人앞으로
2020-01-16 17:52:583382검색

웹 서비스란 무엇인가요? 자세한 내용은 백과사전 설명을 참조하세요.웹 서비스 바이두 백과사전.

Soap은 웹 서비스 구현에 사용되는 프로토콜이자 기술 사양입니다.

웹 서비스의 인터페이스를 구현하는 방법에는 두 가지가 있습니다. 하나는 wsdl 문서를 생성해야 하는 방식이고 다른 하나는 wsdl 문서를 생성하지 않아도 되는 방식입니다.

실제 동작에 앞서, 먼저 자신의 환경이 비누를 지원하는지 확인한 후 php.ini 구성 파일을 수정하여 "soap.wsdl_cache_enabled" 항목을 0으로 설정하세요.

wsdl 문서를 생성할 필요가 없습니다

이 방법은 wsdl 문서를 생성하는 데 필요한 방법보다 간단하지만 작업 방법을 가져오는 __getFunctions()와 같은 일부 방법은 지원되지 않습니다. 당신의 선택.

서버측 ts1.php

<?php
class testA{
        public function sayHi($str){
                return &#39;hi,&#39;.$str;
        }
        public function add($a,$b){
                return $a+$b;
        }
}
$ss = new SoapServer(null, array(&#39;uri&#39;=>&#39;sampleA&#39;));
$ss->setClass(&#39;testA&#39;);
$ss->handle();

서버측 ts1.php 파일에 클래스를 생성한 후 SoapServer를 생성하고 설정하면 일관성을 보장하기 위해 uri를 사용합니다.

클라이언트 측 tc1.php

<?php
$client = new SoapClient(null, array(
        &#39;location&#39;=>&#39;http://10.0.0.232:1075/soap/ts1.php&#39;,
        &#39;uri&#39;=>&#39;sampleA&#39;
        ));
echo $client->sayHi(&#39;Taylor,Swift&#39;);
echo "<br/>";
echo $client->add(1,2);

클라이언트 측에서 SoapClient 개체를 사용하여 요청의 특정 주소를 지정합니다. uri 값은 서버 측에 설정된 값과 일치합니다. 일관성.

접속하려면 브라우저에 http://10.0.0.232:1075/soap/tc1.php를 입력하면 아래와 같이 출력되는 것을 볼 수 있습니다.

웹 서비스 인터페이스 서비스를 구현하는 PHP SOAP에 대한 자세한 설명

이 방법은 wsdl 문서를 생성할 필요가 없으며 구현하기 쉽지만 마찬가지로 wsdl 문서가 없기 때문에 클라이언트는 해당 작업 방법을 얻을 수 없습니다. 그러나 wsdl 문서를 생성하면 클라이언트는 단일 요청 주소를 기반으로 서버가 노출하는 모든 인터페이스를 얻을 수 있습니다.

wsdl 문서 생성 방법

wsdl 문서는 일반적으로 공용 클래스 라이브러리 SoapDiscovery를 사용하여 생성할 수 있습니다. 필요한 경우 Baidu Netdisk를 사용하여 SoapDiscovery.class를 직접 다운로드할 수 있습니다. php.php.

서버측 ts2.php

<?php
define(&#39;WSDL_FILE&#39;,&#39;ts2.wsdl&#39;);
if(!file_exists(WSDL_FILE)){
        require_once(&#39;SoapDiscovery.class.php&#39;);
        $sd = new SoapDiscovery(&#39;testD&#39;, &#39;liang&#39;);
        $str = $sd->getWSDL();
        file_put_contents(WSDL_FILE, $str);
}
$ss = new SoapServer(WSDL_FILE);
$ss->setClass(&#39;testD&#39;);
$ss->handle();
class testD{
        public function sayHello($world){
                return &#39;hello,&#39;.$world;
        }
        public function add($a, $b){
                return $a+$b;
        }
}

서버측 ts2.php는 먼저 필요한 wsdl 파일이 존재하는지 확인합니다. 존재하지 않으면 SoapServer 객체를 생성하고 설정합니다. wsdl 문서를 사용하기 때문에 SoapServer 신규가입시에는 wsdl 문서의 주소를 직접 적어주시면 됩니다.

클라이언트 측 tc2.php

<?php
$client = new SoapClient(&#39;http://10.0.0.232:1075/soap/ts2.wsdl&#39;);
print_r($client->__getFunctions());
echo "<br/>";
echo $client->sayHello(&#39;Avril Lavigne&#39;);
echo "<br/>";
echo $client->add(9,8);

클라이언트 측 tc2.php 파일에는 SoapClient 객체 생성 시 요청한 wsdl 문서의 주소가 직접 채워집니다. 이 문서는 ts2.php에 의해 생성됩니다.

이제 서버측 ts2.php와 클라이언트측 tc2.php가 작성되었으니 이제 ts2.php를 요청해야 합니다. 왜 요청할까요?

먼저 ts2.php를 통해 wsdl 파일을 생성해야 하므로 처음에만 수행하면 되므로 wsdl 문서가 생성된 후에는 다시 수행할 필요가 없습니다.

(나중에 ts2.php를 수정한 경우 기존 wsdl 문서를 삭제한 후 다시 ts2.php를 요청하여 새 wsdl 문서를 생성해야 합니다.)

1 wsdl 문서를 생성하려면 ts2.php를 요청하세요. http://10.0.0.232:1075/soap/ts2.php.

2. 반환된 결과를 보려면 tc2.php를 요청하세요.

웹 서비스 인터페이스 서비스를 구현하는 PHP SOAP에 대한 자세한 설명

3. 브라우저를 통해 wsdl 문서의 주소에 직접 액세스하면 wsdl 문서의 특정 내용을 볼 수 있습니다.

웹 서비스 인터페이스 서비스를 구현하는 PHP SOAP에 대한 자세한 설명

php 비누도 다양하게 지원합니다. 인증, 헤더 설정 등 기타 작업에 대해서는 필요한 경우 공식 문서를 참조하세요.

위 내용은 웹 서비스 인터페이스 서비스를 구현하는 PHP SOAP에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제