PHP SOAP 서버
PHP와 Soap을 사용하여 SOAP 서버를 설정하는 것은 매우 쉽습니다. 기본적으로 웹 서비스에 노출하려는 함수를 작성한 다음 이를 Soap에 등록하면 됩니다. PHP SOAP 서버 설정을 완료하려면 두 단계가 필요합니다. 먼저, PHP 코드에서 Soap 객체의 인스턴스를 생성한 다음 HTTP POST 메서드를 사용하여 원래 데이터를 Soap에 전달하여 처리해야 합니다.
Soap은 php5부터 통합되었으며 다음을 사용합니다. SOAP는 비교적 간단합니다. 가장 일반적으로 사용되는 클래스는 SoapServer와 SoapClient입니다. 여기서 SoapServer는 웹 서비스 서버를 생성하는 데 사용되고 SoapClient는 클라이언트인 Webservice를 호출하는 데 사용됩니다. 비누는 php5에서 통합되었으므로 php.ini에서 비누 구성 요소만 활성화하면 됩니다.
창을 예로 들어 보겠습니다.
|
|
Soap 인스턴스:
0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신 0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신 03 04 05 06 07 08 09 webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신0 webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신 |
|
0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신 0webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신
|
클래스 테스트{ 함수 demo(){ return ' 안녕하세요' ; } } //웹 서비스 생성 시작 //null은 ip로 전달될 수 있으며, 두 번째 매개변수는 사용될 인증 ID와 유사합니다. 호출할 때 $webService = new SoapServer(null, 배열<code>( 'uri' => 'test.php' ) );<code>//제공해야 할 클래스를 설정하는 SetClass는 어렵지 않죠? $webService ->setClass( '테스트' ); $webService ->handle();
|
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 - > ;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'
);<code>$soap
=
new
soap_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 |
|
여기에서 실행 프로세스 호출을 시작하세요.
|
//웹서비스 요청 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 확장 클래스 호출 $client new 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 NuSOAP를 통해 WSDL을 사용하면 다음과 같은 이점이 있습니다.
방금 생성한 서버 URL http://webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신7.0.0.webServicephp의 비누와 nusoap 서버와 클라이언트 간의 통신/test.php를 실행해 보면 다음과 같습니다. 방법 이름을 클릭하세요. 이런 식으로 서비스에 몇 줄의 코드를 추가함으로써 NuSOAP를 사용하는 서비스에 대한 시각적 문서를 제공합니다. 하지만 그것이 우리가 할 수 있는 전부는 아닙니다. NuSOAP를 사용하여 서비스에 일부 WSDL 호출을 추가하고 서비스에 대한 WSDL 및 기타 문서를 생성할 수 있습니다. 대조적으로, 적어도 우리의 간단한 예에서는 클라이언트에서 할 수 있는 일이 많지 않습니다. 아래의 클라이언트는 WSDL을 사용하지 않는 클라이언트와 다르지 않습니다. 유일한 차이점은 이전과 같이 서비스 엔드포인트 대신 WSDL의 URL을 제공하여 Soapclent 클래스를 구문 분석한다는 것입니다. NuSoap은 WebService를 호출할 때 인코딩을 설정할 수 있습니다. 문자 왜곡에 대한 해결 방법은 다음과 같습니다.
|