>백엔드 개발 >PHP 튜토리얼 >webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

WBOY
WBOY원래의
2016-07-30 13:29:261024검색

PHP SOAP 서버

PHP와 Soap을 사용하여 SOAP 서버를 설정하는 것은 매우 쉽습니다. 기본적으로 웹 서비스에 노출하려는 함수를 작성한 다음 이를 Soap에 등록하면 됩니다. PHP SOAP 서버 설정을 완료하려면 두 단계가 필요합니다. 먼저, PHP 코드에서 Soap 객체의 인스턴스를 생성한 다음 HTTP POST 메서드를 사용하여 원래 데이터를 Soap에 전달하여 처리해야 합니다.

Soap은 php5부터 통합되었으며 다음을 사용합니다. SOAP는 비교적 간단합니다. 가장 일반적으로 사용되는 클래스는 SoapServer와 SoapClient입니다. 여기서 SoapServer는 웹 서비스 서버를 생성하는 데 사용되고 SoapClient는 클라이언트인 Webservice를 호출하는 데 사용됩니다. 비누는 php5에서 통합되었으므로 php.ini에서 비누 구성 요소만 활성화하면 됩니다.

창을 예로 들어 보겠습니다.

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

extension=php_soap.dll

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

extension=php_soap.dll

Soap 인스턴스:

0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

03

04

05

06

07

08

09

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신0

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

classtest{

    functiondemo(){

        return'hello word';

    }

}

//开始创建webservice

//null可传入ip,第二个参数类webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신84;于授权标识,调用时会用到

$webService= newSoapServer(null,array('uri'=>'test.php'));

//设置需要提供的类,setClass不难理解吧?

$webService->setClass('test');

$webService->handle();

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신. 먼저 서버를 생성합니다. 통합된 php5는 어떠한 비누 지원 파일도 도입할 필요가 없으므로 생성할 수 있습니다. 예를 들어 액세스 주소는 http://webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신7.0.0.webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신/test.php로 설정됩니다.

0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

3

4

5

6

7

$client= newSoapClient(null,array(

    "location"=> 'http://webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신7.0.0.webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신/test.php',

    "uri"      => 'test.php'//请求标识,服务器和客户端必须对应

));

//至此,便可调用类里面的方法了

$demo= $client->demo();

var_dump($demo);

03040506070809webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신
클래스테스트{ 함수demo(){ return' 안녕하세요'; }} //웹 서비스 생성 시작//null은 ip로 전달될 수 있으며, 두 번째 매개변수는 사용될 인증 ID와 유사합니다. 호출할 때$webService= newSoapServer(null,배열<code>('uri'=>'test.php') );<code>//제공해야 할 클래스를 설정하는 SetClass는 어렵지 않죠? $webService->setClass('테스트'); $webService->handle();
이때 비누서버가 생성됩니다. webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신. 방금 생성된 비누 서비스를 호출합니다. 마찬가지로 통합된 php5에서는 비누 지원 파일을 도입할 필요가 없으므로 직접 호출할 수 있습니다.
webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신 34567 $client= SoapClient(null,배열( "위치"=> 'http://webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신7.0.0.webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신/test.php'<code>, "uri" => 'test.php', //식별 요청, 서버와 클라이언트는 일치해야 합니다));//이것은 it , 클래스의 메소드를 호출할 수 있습니다$demo= $client- &gt ;demo();var_dump($demo);

그러나 Nusoap은 비누보다 더 유연합니다. 동작 프로세스는 기본적으로 동일하지만 처리 프로세스에 약간의 차이가 있습니다. NuSOAP의 사용도 비교적 간단합니다. 비누서버(soap_server)와 nusoap_client 가 있으며, 비누서버(soap_server)는 웹서비스 서버를 생성하는데 사용되고, nusoap_client 클래스는 클라이언트인 웹서비스를 호출하는데 사용된다. 이 두 클래스의 정의는 lib/nusoap.php에 있으므로 웹서비스 인터페이스 프로그램을 생성하거나 호출할 때 이 파일을 참조해야 합니다.

NuSoap은 WebService를 생성하거나 호출하는 데 사용되는 PHP 환경의 WebService 프로그래밍 도구입니다. 이는 HTTP를 통해 SOAP 메시지를 보내고 받는 PHP 언어로 완전히 작성된 일련의 PHP 클래스인 오픈 소스 소프트웨어입니다. NuSphere Corporation(http://dietrich.ganx4.com/nusoap/)에서 개발했습니다. NuSOAP의 한 가지 장점은 확장 라이브러리 지원이 필요하지 않다는 것입니다. 이 기능을 사용하면 NuSoap을 모든 PHP 환경에서 사용할 수 있으며 서버 보안 설정의 영향을 받지 않습니다.

nusoap 다운로드 제공: nusoap-0.9.5

Nusoap 인스턴스:

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신. 여전히 서버를 만드는 것은 약간의 차이가 있습니다. 방금 언급한, 서버측에서 이것을 생성하고 먼저 nusoap 지원 클래스 라이브러리를 소개합니다

0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

03

04

05

06

07

08

09

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신0

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

//引入nusoap支持类库

require_once('lib/nusoap.php');

$soap= newsoap_server();

$soap->configureWSDL('test');

//这里要说明一下register这个函数,第一个参数是需要调用的方法,第二个参数是传入的数据,第三个参数是传出的数据。

$soap->register('GetTestStr',

        array("name"=> "xsd:string"), // 参数,默认为 "xsd:string"

        array("return"=> "xsd:string")

        );

$HTTP_RAW_POST_DATA= isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA: '';

$soap->service($HTTP_RAW_POST_DATA);

0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신0304050607 0809webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신 //소개 nusoap 지원 클래스 라이브러리require_once('lib/nusoap.php');<code>$soap= newsoap_server();$soap->configureWSDL('테스트'); // 여기서는 등록 함수를 설명해야 합니다. 첫 번째 매개변수는 호출해야 하는 메서드이고, 두 번째 매개변수는 들어오는 데이터, 세 번째 매개변수는 나가는 데이터입니다. $soap->register('GetTestStr', 배열("이름"=> "xsd:문자열"), // 매개변수, 기본 "XSD: 문자열" 배열 "반환"=> "xsd:string") );$HTTP_RAW_POST_DATA= isset($HTTP_RAW_POST_DATA ) ? $HTTP_RAW_POST_DATA: '';$soap->service($HTTP_RAW_POST_DATA); 테이블>

이때 주소는 http://webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신7.0.0.webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신/test.php 로 가정하고 nusoap 서버가 생성되었습니다.

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신.누솝을 불러주세요. 그 전에는 여기에 캡슐화해두었습니다. 파일은 class.nuSoapApi.php 이고 코드는 다음과 같습니다.

0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

03

04

05

06

07

08

09

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신0

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신3

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신4

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신5

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신6

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신7

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신8

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신9

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신0

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신3

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신4

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신5

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신6

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신7

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신8

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신9

30

3webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

3webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

33

34

35

36

37

38

39

40

4webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

4webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

43

44

45

46

47

48

49

50

5webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

5webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

53

54

55

56

57

58

59

60

6webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

6webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

63

64

65

66

67

68

69

70

7webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

7webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

73

74

75

76

77

78

79

80

8webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

8webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

83

84

85

86

87

88

89

90

<?php

/**

 * nusoap扩展类

 * Email:zhangyuan#tieyou.com

 * @author hkshadow

 */

//引入nusoap基类

require_once('pto/nusoap/nusoap_new/lib/nusoap.php');

classnuSoapApi extendsnusoap_client{

    private$_strSoapUrl= '';//wsdl url

    private$_strSoapDefenCoding= 'utf-8'; // 当前请求的HTTP内容类型的字符集。默认utf-8

    private$_strXmlEnCoding= 'utf-8';//传入消息的字符集编码(响应)。默认utf-8

    private$_arrParam= array(); //arrData

    private$_objSoap= null; //初始化Nusoap对象

    

    /**

     * 构造函数

     * @param str $_strSoapUrl

     * @param 可选,默认为wsdl $_strSoapWsdl

     */

    publicfunction__construct($_strSoapUrl,$_strSoapWsdl= true){

        if($this->_objSoap === null){

            $this->_objSoap = newnusoap_client($_strSoapUrl,$_strSoapWsdl);

        }

    }

    

    /**

     * 设置消息数据

     * @param array $arrData

     */

    publicfunctionsetArrParam($arrData){

        $this->_arrParam = $arrData;

    }

    

    /**

     * 设置xml编码

     * @param true / false $bool

     */

    publicfunctionsetDeCodeUtf8($bool= false){

        $this->_objSoap->decode_utf8 = $bool;

    }

     

    /**

     * 设置http内容类型的字符编码

     * @param str $strCode

     */

    publicfunctionsetSoapDefenCoding($strCode){

        if(!empty($strCode)){

            $this ->_objSoap->soap_defencoding = $strCode;

        }else{

            $this->_objSoap->soap_defencoding = $this->_strSoapDefenCoding;

        }

    }

    publicfunctionsetXmlEnCoding($strCode){

        if(!empty($strCode)){

            $this->_objSoap->xml_encoding = $strCode;

        }else{

            $this->_objSoap->xml_encoding = $this->_strXmlEnCoding;

        }

    }

     

    /**

     * 获取数据

     */

    publicfunctiongetRequestData($fun){

        $arrData= array();

        $arrData= $this->_objSoap->call($fun,$this->_arrParam);

        return$arrData;

    }

    /**

     *  数组转对象

     * @param array $arrData

     */

    publicfunctionarrDataObj($arrData){

        //引用地址,而非引用拷贝

        $objStdClass= newstdClass();

        foreach($arrDataas$key=>$value){

            if(is_array($value)){

                $objStdClass->$key= $this->arrDataObj($value);

            }else{

                $objStdClass->$key= $value;

            }

        }

        return$objStdClass;

    }

}

?>

여기에서 실행 프로세스 호출을 시작하세요.

0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

03

04

05

06

07

08

09

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신0

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신3

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신4

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신5

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신6

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신7

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신8

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신9

//定义webservice的请求url

define('SERVICEDTS_WEBSERVER_URL', 'http://webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신7.0.0.webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신/test.php?wsdl');

//引入刚刚封装的类

require_once('lib/class.nuSoapApi.php');

//调用nusoap扩展类

$client= newNusoapApi(SERVICEDTS_WEBSERVER_URL,true);

$client->setSoapDefenCoding('utf-8');

$client->setDeCodeUtf8(false);

$client->setXmlEnCoding('utf-8');

$paras= array('name'=> 'hkshadow');

$client->setArrParam($paras);

$result= $client->getRequestData('GetTestStr');

if(! $err= $client->getError ()) {

    echo" 返回结果: ", $result;

} else{

    echo" 调用出错: ", $err;

}

//输出Hello, { hkshadow } !

0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신03040506070809 webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신3webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신4webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신5webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신6 webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신7 webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신8webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신9
//웹서비스 요청 url 정의정의('SERVICEDTS_WEBSERVER_URL', 'http://webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신7.0.0.webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신/test.php?wsdl');//방금 캡슐화된 것을 소개합니다 클래스require_once('lib/class.nuSoapApi.php'); code> code>//nusoap 확장 클래스 호출$clientnew NusoapApi(SERVICEDTS_WEBSERVER_URL,true);$client->setSoapDefenCoding('utf-8' 코드> <code>);$client->setDeCodeUtf8(false); $client ->setXmlEnCoding('utf-8');$paras 코드>배열('이름'=> 'hkshadow ');$client->setArrParam($paras ) ;$result$client->getRequestData('GetTestStr' );if(! $err$client->getError ()) {echo" 반환 결과: ", $result} echo" 호출 오류: ", $err //출력 안녕하세요, { hkshadow } !

설명:

WSDL
WSDL은 웹 서비스를 설명하는 데 사용되는 XML 언어입니다. 웹 서비스 클라이언트에 서비스에 접근하는 데 필요한 모든 정보를 제공하는 기계가 읽을 수 있는 형식입니다. NuSOAP는 특히 WDSL 파일을 구문 분석하고 해당 파일에서 정보를 추출하는 클래스를 제공합니다. Soapclient 개체는 wsdl 클래스를 사용하여 개발자가 서비스를 더 쉽게 호출할 수 있도록 합니다. WSDL 정보를 사용하여 메시지를 생성함으로써 프로그래머는 이를 호출하기 위한 작업의 이름과 매개변수만 알면 됩니다.

NuSOAP를 통해 WSDL을 사용하면 다음과 같은 이점이 있습니다.
네임스페이스, 엔드포인트 URL, 매개변수 이름 등과 같은 모든 서비스 메타파일을 WSDL 파일에서 직접 얻을 수 있으므로 클라이언트가 동적으로 서버 측 변경 사항에 적응합니다. 이 데이터는 항상 서버에서 사용할 수 있으므로 더 이상 사용자 스크립트에 이 데이터를 하드 코딩할 필요가 없습니다.
soap_proxy 클래스를 사용할 수 있습니다. 이 클래스는 Soapclient 클래스에서 파생되며 WDSL 파일에 자세히 설명된 작업에 해당하는 메서드를 추가합니다. 이제 사용자는 이를 통해 이러한 메소드를 직접 호출할 수 있습니다.
soapclient 클래스에는 비누_proxy 클래스의 객체를 반환하는 getProxy() 메서드가 포함되어 있습니다. Soap_proxy 클래스는 Soapclient 클래스에서 파생되며 WSDL 문서에 정의된 작업에 해당하는 메서드를 추가하고 사용자가 끝점의 원격 메서드를 호출할 수 있도록 합니다. 이는 비누클라이언트 개체가 WDSL 파일로 초기화된 경우에만 적용됩니다. 장점은 사용자가 사용하기 쉽다는 것이고, 단점은 성능입니다. PHP에서 객체를 생성하는 데 시간이 많이 걸리고 이 기능은 실용적인 목적으로 사용되지 않습니다.

0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

03

04

05

06

07

08

09

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신0

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신3

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신4

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신5

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신6

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신7

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신8

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신9

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신0

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

//调用nusoap扩展类

$client= newNusoapApi(SERVICEDTS_WEBSERVER_URL,true);

$client->setSoapDefenCoding('utf-8');

$client->setDeCodeUtf8(false);

$client->setXmlEnCoding('utf-8');

$paras= array('name'=> 'hkshadow');

$client->setArrParam($paras);

//      $result = $client->getRequestData('GetTestStr');

//生成proxy类

$proxy= $client->getProxy();

//调用远程函数

$sq= $proxy->GetTestStr('Bruce Lee');

if(!$err=$proxy->getError()) {

    print_r($sq);

} else{

    print"ERROR: $err";

}

print'REQUEST:<xmp>'.$p->request.'</xmp>';

print'RESPONSE:<xmp>'.str_replace('><code>, ">n<code>, $p->response).'</xmp>';

0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신 03040506070809webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신3webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신4webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신5webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신6webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신7webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신8webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신9webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신
/ /nusoap 확장 클래스 호출$client= newNusoapApi(SERVICEDTS_WEBSERVER_URL,true); $client->setSoapDefenCoding('utf-8'); code> 코드>$client->setDeCodeUtf8(false);$client ->setXmlEnCoding('utf-8');$paras = <code>배열('이름'=> 'hkshadow');$client->setArrParam($paras) ;// $result = $client->getRequestData('GetTestStr');//프록시 클래스 생성<code>$proxy= $client->getProxy(); //원격 기능 호출$sq= $proxy ->GetTestStr('브루스 리');if(! 코드>$err=$proxy->getError()) { print_r($sq);} else{ 인쇄"오류: $err" ;}인쇄'요청:<xmp>'</xmp> .$p->요청.''; 인쇄'RESPONSE:<xmp>'</xmp>.str_replace('>, ">n<code>, $p->응답). '';

방금 생성한 서버 URL http://webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신7.0.0.webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신/test.php를 실행해 보면 다음과 같습니다.
webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

방법 이름을 클릭하세요. 이런 식으로 서비스에 몇 줄의 코드를 추가함으로써 NuSOAP를 사용하는 서비스에 대한 시각적 문서를 제공합니다. 하지만 그것이 우리가 할 수 있는 전부는 아닙니다.

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

NuSOAP를 사용하여 서비스에 일부 WSDL 호출을 추가하고 서비스에 대한 WSDL 및 기타 문서를 생성할 수 있습니다. 대조적으로, 적어도 우리의 간단한 예에서는 클라이언트에서 할 수 있는 일이 많지 않습니다. 아래의 클라이언트는 WSDL을 사용하지 않는 클라이언트와 다르지 않습니다. 유일한 차이점은 이전과 같이 서비스 엔드포인트 대신 WSDL의 URL을 제공하여 Soapclent 클래스를 구문 분석한다는 것입니다.

NuSoap은 WebService를 호출할 때 인코딩을 설정할 수 있습니다. 문자 왜곡에 대한 해결 방법은 다음과 같습니다.

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신

3

4

$client= newnusoap_client("http://webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신7.0.0.webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신/test.php?wsdl",true);   

$client->soap_defencoding = 'utf-8';

$client->decode_utf8 = false;

$client->xml_encoding = 'utf-8';

webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신


3

4



$client= newnusoap_client("http://webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신7.0.0.webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신/test.php ?wsdl",true);

$client->soap_defencoding = 'utf-8';

$client->decode_utf8 = false;

$client->xml_encoding = 'utf-8';

파일 코드는 출력을 가질 수 없습니다. 그렇지 않으면 호출 시 다음과 유사한 오류가 보고됩니다. 행 x(행 번호)에서 SOAP 페이로드를 구문 분석하는 XML 오류: 예약된 XML 이름php5가 활성화된 경우 내장된 비누를 사용할 때 nusoap의 SoapClient 클래스와 php5의 내장 SOAP 클래스 사이에 충돌이 있는 경우(여기서는 그런 상황이 없으며 둘 다 동시에 열려 있습니다): 해결책webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신. 내장된 php5 비누 확장(Windows의 경우 php_soap.dll)을 로드하지 않도록 php.ini를 수정합니다. webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신. 일부 사람들은 nusoap의 SoapClient 클래스 이름을 변경했습니다. 이 시점에서는 php5에 내장된 비누든 nusoap 확장 클래스든 웹서비스가 솔루션입니다. 위의 일부 예에서 볼 수 있듯이 nusoap은 더 유연하고 간단합니다. webservice 통신을 위해서는 php5에 내장된 비누가 더 빠릅니다. 어느 것을 선택하든지 하나만 선택하면 됩니다. 원래 주소: 비누와 누솝 서버와 클라이언트 간의 통신 http://www.mudbest.com/webservicephp/ 위 내용은 내용을 포함하여 비누와 nusoap 서버와 webServicephp 클라이언트 사이의 통신을 소개한 내용입니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.