>백엔드 개발 >PHP 튜토리얼 >PHP5에서의 WSDL 및 SOAP 호출 구현 프로세스

PHP5에서의 WSDL 및 SOAP 호출 구현 프로세스

WBOY
WBOY원래의
2016-08-08 09:28:331210검색

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 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:blog内置变量다음 기사:php基础学习笔记(3)