1. 기본 개념
SOAP(Simple Object Access Protocol)은 분산형 또는 분산형 환경에서 정보를 교환하기 위한 간단한 프로토콜로 XML 기반 프로토콜이며 SOAP 엔벨롭(envelop), 캡슐화(encapsulation)의 네 부분으로 구성됩니다. 메시지에는 누가 이를 수락하고 처리해야 하는지, 그리고 애플리케이션이 표현해야 하는 데이터 유형의 인스턴스를 나타내는 데 사용되는 SOAP 인코딩 규칙(인코딩 규칙)이 포함됩니다. 원격 프로시저 호출 및 응답을 위한 프로토콜은 기본 프로토콜을 사용하여 정보를 교환합니다.
WSDL(Web Service Description Language)은 XML 웹 서비스를 설명하기 위한 표준 XML 형식입니다. Ariba, Intel, IBM, Microsoft 등의 개발자가 제안했습니다. 이는 특정 언어와 관계없이 추상적인 방식으로 특정 웹 서비스에서 보내고 받는 관련 작업과 메시지를 정의합니다. 정의에 따르면 아직 WSDL을 객체 인터페이스 정의 언어로 생각할 수 없습니다. 예를 들어 CORBA 또는 COM과 같은 애플리케이션 아키텍처는 객체 인터페이스 정의 언어를 사용합니다. WSDL은 프로토콜 중립성을 유지하지만 SOAP 바인딩을 기본적으로 지원하므로 SOAP와 분리할 수 없는 링크를 설정합니다. 따라서 이 기사에서 WSDL을 논의할 때 SOAP를 통신 프로토콜로 사용한다고 가정합니다.
SOAP와 WSDL은 웹 서비스의 두 가지 주요 표준이지만 반드시 연결되어 있지는 않으며 독립적으로 사용할 수 있습니다. 이들 사이의 관계는 HTTP와 HTML 사이의 관계와 유사합니다. 전자는 프로토콜이고 후자는 웹 서버에 대한 설명입니다.
2. PHP5에서의 구성
php 구성 파일 php.ini에서
를 찾습니다.
extension=php_soap.dll
앞의 ";" 기호를 제거한 후 웹 서비스를 다시 시작하세요
3. 웹 서비스 메서드, 매개변수, 데이터 유형 쿼리
지방 통신사의 주문 입력 인터페이스는 http://***.******.com/services/AcceptedBusiness?wsdl입니다.
우리는 SoapClient의 __geunctions() 및 __getTypes() 메소드 뷰를 사용합니다. 인터페이스의 메소드, 매개변수 및 데이터 유형
__getFunctions에 나열된 인터페이스만 비누로 호출할 수 있습니다.
루트 디렉토리에 비누.php 코드를 생성하세요
<?php header("content-type:text/html;charset=utf-8"); try { $client = new SoapClient("http://***.******.com/services/AcceptedBusiness?wsdl"); print_r($client->__getFunctions()); print_r($client->__getTypes()); } catch (SOAPFault $e) { print $e; } ?>
브라우저에서 http://localhost/soap.php를 실행한 후 반환 결과는 다음과 같습니다
Array ( [0] => ArrayOf_xsd_anyType introduceAcceptedBusiness(string $c3, string $c4, string $linkman, string $linknum, string $num, string $idcard, string $remark, string $address) [1] => ArrayOf_xsd_anyType introduceAcceptedBusinessByAiZhuangWei(string $subname, string $linkphone, string $idcard, string $address, string $businesstype, string $marketcode, string $surveycode, string $commanager, string $commanagerphone, string $bendiwang, string $fenju, string $zhiju, string $remark) [2] => string introduceAcceptedBusinessByStandardInterface(string $xmlStr) [3] => string introduceAcceptedBusinessByCallOut(string $xmlStr) [4] => string introduceAcceptedBusinessByYddj(string $xmlParam) [5] => ArrayOf_xsd_anyType queryAcceptedBusinessByAiZhuangWei(string $surveycode, string $starttime, string $endtime) [6] => string queryCallOutOrderByConfig(string $xmlParam) ) Array ( [0] => anyType ArrayOf_xsd_anyType[] )
개발문서에 언급된 인터페이스로 사용되는 IntroductionAcceptedBusinessByStandardInterface(string $xmlStr) 메소드가 있고, 매개변수는 xml 문자열입니다
또한 일부 인터페이스에는 __setSoapHeaders 메서드를 추가해야 하는 SoapHeader 인증이 언급되어 있습니다. 자세한 내용은 http://php.net/manual/zh/soapclient.setsoapheaders.php를 참조하세요
4. 주문 제출
이 단계는 개발 문서에 따라 xml 문자열을 연결한 후 이를 informedAcceptedBusinessByStandardInterface
의 매개변수로 전달하여 다음 내용으로 acceptbusiness.php를 생성하는 것입니다
<?php header("content-type:text/html;charset=utf-8"); try { $client = new SoapClient('http://***.*******.com/services/AcceptedBusiness?wsdl'); $xml = " <?xml version='1.0' encoding='UTF-8' ?> <PACKAGE> <C3>**电信</C3> <C4></C4> <LINKMAN>张三</LINKMAN> <LINKNUM>13412341234</LINKNUM> <LINKADDRESS>广东深圳</LINKADDRESS> <REMARK>iPhone 6</REMARK> <CHANNEL></CHANNEL> <GRIDCODE>1111111111111111111111111111111</GRIDCODE> <AGENTCODE>2111</AGENTCODE> <KEY>1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111</KEY> </PACKAGE> "; $return = $client->introduceAcceptedBusinessByStandardInterface($xml); print_r($return); } catch (SOAPFault $e) { print_r('Exception:'.$e); } ?>
브라우저에서 실행 후 return
<?xml version="1.0" encoding="UTF-8"?> <PACKAGE> <STATUS>0</STATUS> <REASON>入单成功!</REASON> <ORDERSEQ>2014100905523549742</ORDERSEQ> </PACKAGE>
참고: http://www.cnblogs.com/txw1958/p/php5-soap-wsdl.html
위 내용은 관련 내용을 포함하여 PHP5에서의 WSDL 및 SOAP 호출 구현 프로세스를 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.