찾다
백엔드 개발PHP 튜토리얼SOAP 웹 서비스 인터페이스

PHP에서는 php.ini 파일에서 php_soap.dll 확장자를 활성화한 후 SOAP를 지원할 수 있습니다.
비누 확장 라이브러리에는 크게 세 가지 유형의 객체가 있습니다.
1. SoapServer
는 PHP 서버측 페이지 생성 시 호출할 수 있는 함수를 정의하고 응답 데이터를 반환하는 데 사용됩니다. SoapServer 객체를 생성하기 위한 구문 형식은 다음과 같습니다.
$soap = new SoapServer($wsdl, $array);
그 중 $wsdl은 shoep에서 사용하는 wsdl 파일이고, wsdl은 표준 형식입니다. Web Service를 설명하기 위한 것입니다. $wsdl이 null로 설정되어 있으면 wsdl 모드를 사용하지 않는다는 의미입니다. $array는 SoapServer의 속성정보로 배열입니다.
SoapServer 객체의 addFunction 메소드는 클라이언트가 어떤 함수를 호출할 수 있는지 선언하는 데 사용됩니다. 구문 형식은 다음과 같습니다.
$soap->addFunction($function_name);
그 중, $soap은 SoapServer 개체입니다. $function_name은 호출해야 하는 함수의 이름입니다.
SoapServer 객체의 핸들 메소드는 사용자 입력을 처리하고 해당 함수를 호출하는 데 사용되며, 최종적으로 처리 결과를 클라이언트에 반환합니다. 구문 형식은 다음과 같습니다.
$soap->handle([$soap_request]);
이 중 $soap은 SoapServer 객체이고 $soap_request는 사용자의 요청 정보를 나타내는 데 사용되는 선택적 매개 변수입니다. . $soap_request를 지정하지 않으면 서버가 사용자의 모든 요청을 수락한다는 의미입니다.
2. SoapCliet
은 원격 서버의 SoapServer 페이지를 호출하고 해당 기능에 대한 호출을 구현하는 데 사용됩니다. SoapClient 객체를 생성하기 위한 구문 형식은 다음과 같습니다.
$soap = new SoapClient($wsdl,$array);
이 중 $wsdl 및 $array 매개변수는 SoapServer와 동일합니다.
SoapClient 객체를 생성한 후 서버 페이지에서 함수를 호출하는 것은 SoapClient 메서드를 호출하는 것과 동일합니다. 생성 구문은 다음과 같습니다.
$soap->user_function($params);
그 중 , $soap은 SoapClient 개체이고 user_function은 서버 측에서 호출되는 함수이며 $params는 함수에 전달되는 매개 변수입니다.
3. SoapFault
SoapFault는 비누 접근 중 발생할 수 있는 오류를 생성하는 데 사용됩니다. SoapFault 객체를 생성하기 위한 구문 형식은 다음과 같습니다.
$fault = new SoapFault($faultcode,$faultstring);
이 중 $faultcode는 사용자 정의 오류 코드이고, $faultstring은 사용자 -정의된 오류 메시지. SoapFault 객체는 서버 측 페이지에 오류가 발생하거나 사용자가 SoapFault 객체를 생성하면 자동으로 생성됩니다. Soap 액세스 중에 발생하는 오류의 경우 클라이언트는 SoapFalut 개체를 캡처하여 해당 오류 정보를 얻을 수 있습니다.
클라이언트에서 SoapFault 개체를 캡처한 후 다음 코드를 통해 오류 코드 및 오류 정보를 얻을 수 있습니다.
$fault->faultcode;//Error code
$fault->faultstring; //오류 정보
그 중 $fault는 앞서 생성한 SoapFault 객체입니다.
SoapServer와 SoapClient는 모두 두 개의 매개변수를 받습니다. 두 번째 매개변수는 여러 옵션을 지원하는 Option입니다.
uri: 네임스페이스, 클라이언트와 서버에 필요
위치. 클라이언트가 서버 프로그램의 액세스 주소를 지정하는 데 사용되며, 이는 이 예에서 두 번째 코드의 프로그램 주소입니다.
trace: 클라이언트에서 사용됩니다. true인 경우 디버깅을 위해 서버와 클라이언트 간의 통신 내용을 얻을 수 있습니다.

Soapserver.php

Java 코드

//먼저 SoapServer 객체 인스턴스를 생성한 후 원하는 기능을 등록하세요. 노출,

//승인된 비누 요청을 처리하는 데 마지막 핸들()이 사용됩니다.

error_reporting(7) //공식적으로 출시되면 0으로 설정합니다.

date_default_timezone_set (' PRC'); //시간대 설정

/* 클라이언트 호출을 위한 여러 기능 */

function reverse($str)

{

$retval = '';

if (strlen($str)

return new SoapFault ('클라이언트', '', '잘못된 문자열'); >

}

for ($i = 1; $i $retval .= $str [(strlen($ str) - $i)];

}

return $retval;

function add2numbers($num1, $num2)

{

if (trim($num1) != intval($num1)) {

        새 SoapFault('클라이언트', '', '첫 번째 숫자가 유효하지 않음')를 반환합니다.  

    }  

    if (trim($num2) != intval($num2)) {  

        새 SoapFault 반환('클라이언트','','두 번째 숫자 유효하지 않습니다');  

    }  

    반품($num1 + $num2);  

}  

  

함수 gettime()  

{  

    $time = date('Y-m-d H:i:s', 시간());  

    $time을 반환합니다.  

}  

  

$soap = new SoapServer (null, array('uri' => "httr://test-rui"));  

$soap->addFunction('reverse');  

$soap->addFunction('add2numbers');  

$soap->addFunction('gettime');  

$soap->addFunction(SOAP_FUNCTIONS_ALL);  

$soap->handle();  

?>  

 SoapClient.php

Java 代码  

error_reporting(7);  

시도해 보세요 {  

    $client = 새 SoapClient (null, array('location' => "http://www.yiigo.com/Soapserver.php", 'uri' = > 'http://test-uri'));  

  

    $str = "이 문자열은 반전됩니다.";  

    $reversed = $client->reverse($str);  

    echo는 "'$str'을 반대로 하면 '$reversed'가 됩니다.";  

  

    $n1 = 20;  

    $n2 = 33;  

    $sum = $client->add2numbers($n1, $n2);  

    에코 "
";  

    에코 "$n1 + $n2를 시도하면 $sum을 얻게 됩니다.";  

  

    에코 "
";  

    echo "리모예 시스템 시간은 다음과 같습니다." . $클라이언트->gettime();  

} catch (SoapFault $fault) {  

    에코 "Fault! code:" . $fault->faultcode . " 끈:" . $fault->faultstring;  

}  

?>  

'This string will be reversed'를 반대로 하면 'desrever eb lliw gnirts sihT'를 얻게 됩니다.
20 + 33을 시도하면 53을 얻게 됩니다.
remoye 시스템 시간은 다음과 같습니다. 2012-05-28 16:14:29

 

통로SoapHeader实现身份认证

Java 代码  

class 서버  

{  

    공용 함수 인증($a)  

    {  

        if ($a != '123456789') {  

            새 SoapFault('서버', '사용户身份认证信息错误')를 발생시킵니다.  

        }  

    }  

  

    공개 함수 say()  

    {  

        return '안녕';  

    }  

}  

  

$srv = new SoapServer(null, array('uri' =>'http://localhost/namespace '));  

$srv->setClass('서버');  

$srv->handle();   

 客户端

Java 代码  

$cli = new SoapClient(null,  

array('uri' => 'http://localhost/namespace/',

'위치' => 'http://localhost/server.php',

'trace' => true));

//auth는 서버에서 처리되는 함수입니다. 12345689는 매개변수입니다.

$h = new SoapHeader(' http://localhost/namespace/',

'auth', '123456789', false, SOAP_ACTOR_NEXT)

$cli->__setSoapHeaders(array($h) );

try {

echo $cli->say()

} catch(예외 $e) {

echo $e- >getMessage ();

}

server.php의 서버 클래스에는 헤더 이름에 해당하는 "auth" 메소드가 있습니다. auth 메소드는 SoapHeader의 데이터입니다. SoapServer는 이 요청을 받으면 먼저 auth 메소드를 호출하고 "123456789"를 메소드에 매개변수로 전달합니다. mustUnderstand 매개변수가 false인 경우 auth 메서드가 없어도 say 메서드가 호출되지만, true인 경우 auth 메서드가 없으면 Soapfault를 반환하여 헤더가 처리되지 않았음을 알립니다. . 행위자 매개변수는 헤더를 처리해야 하는 역할을 지정합니다. 여기서는 이를 완전히 이해하지 못하므로 말하기가 어렵습니다.

Java 코드

$file = $this->getSoapWSDL();

$client = new SoapClient($file);//url을 통해 액세스할 수 있습니다. browser ,

$param = array('userID' => 'test', 'merchantID' => 'test');

$returnSt = $를 호출하여 해결할 수 없습니다. client-> ;checkUser($param);

print_r($returnSt->checkUserResult)

공용 함수 getSoapWSDL()

{ // 주기적으로 URL 파일을 로컬에 저장합니다.

$file = Mage::getBaseDir() . DS 'shengda' . if (time() > filemtime($file) + 7 * 86400) {

$url = "http://jf.sdo.com/ExchangeScore/ExchangeService.asmx?WSDL"

include_once(BP . DS . "lib/Snoopy.class.php")

$snoopy = 새 스누피

$snoopy->fetch($url); / 모든 콘텐츠 가져오기

$snoopy->read_timeout = 4;

$wsdl = $snoopy->results

if ($snoopy-& gt;status; == '200' && !$snoopy->timed_out) {

if (!is_dir(dirname($file))) {

mkdir(dirname($file)); 🎜>

                                                                                             $파일 켜기

}

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
교통량이 많은 웹 사이트를위한 PHP 성능 튜닝교통량이 많은 웹 사이트를위한 PHP 성능 튜닝May 14, 2025 am 12:13 AM

thesecrettokeepingAphp-poweredwebsiterunningsmoothlydlyUnderHeavyloadInvolvesEveralKeyStrategies : 1) ubstractOpCodeCachingWithOpCacheTecescripteExecutionTime, 2) usedatabasequeryCachingwithRedSendatabaseload, 3) LeverAgeCdnslikeCloudforforporerververforporporpin

PHP의 종속성 주입 : 초보자를위한 코드 예제PHP의 종속성 주입 : 초보자를위한 코드 예제May 14, 2025 am 12:08 AM

Code는 코드가 더 명확하고 유지 관리하기 쉽기 때문에 의존성 주입 (DI)에 관심을 가져야합니다. 1) DI는 클래스를 분리하여 더 모듈 식으로 만들고, 2) 테스트 및 코드 유연성의 편의성을 향상시키고, 3) DI 컨테이너를 사용하여 복잡한 종속성을 관리하지만 성능 영향 및 순환 종속성에주의를 기울이십시오. 4) 모범 사례는 추상 인터페이스에 의존하여 느슨한 커플 링을 달성하는 것입니다.

PHP 성능 : 응용 프로그램을 최적화 할 수 있습니까?PHP 성능 : 응용 프로그램을 최적화 할 수 있습니까?May 14, 2025 am 12:04 AM

예, PPAPPLICATIONISPOSSIBLEADESLESTION.1) INVERECINGUSINGAPCUTERODUCEDABASELOAD.2) INCODINCEDEXING, ENGICIONEQUERIES 및 CONNECTIONPOULING.3) 향상된 보드 바이어링, 플로 팅 포르코 잉을 피하는 최적화 된 APPCUTERODECEDATABASELOAD.2)

PHP 성능 최적화 : 궁극적 인 가이드PHP 성능 최적화 : 궁극적 인 가이드May 14, 2025 am 12:02 AM

theKeyStrategiesToSINCINTIFILINTINTIFILINTINTHPPORMATIONPERFORMANCEARE : 1) USEOPCODECACHING-CCHACHETEDECUTECUTINGTIME, 2) 최적화 된 ABESINSTEMENTEMENDSTEMENTEMENDSENDSTATEMENTENDS 및 PROPERINDEXING, 3) ConfigureWebSerVERSLIKENGINXXWITHPMFORBETPERMERCORMANCES, 4)

PHP 의존성 주입 컨테이너 : 빠른 시작PHP 의존성 주입 컨테이너 : 빠른 시작May 13, 2025 am 12:11 AM

aphpdectionenceindectioncontainerisatoolthatmanagesclassdependencies, 향상 Codemodularity, testability 및 maintainability.itactAsacentralHubForCreatingAndingDinjectingDingingDingingdecting.

PHP의 종속성 주입 대 서비스 로케이터PHP의 종속성 주입 대 서비스 로케이터May 13, 2025 am 12:10 AM

대규모 응용 프로그램의 경우 SELLENCIONINGESS (DI)를 선택하십시오. ServicElocator는 소규모 프로젝트 또는 프로토 타입에 적합합니다. 1) DI는 생성자 주입을 통한 코드의 테스트 가능성과 모듈성을 향상시킵니다. 2) Servicelocator는 센터 등록을 통해 서비스를 얻습니다. 이는 편리하지만 코드 커플 링이 증가 할 수 있습니다.

PHP 성능 최적화 전략.PHP 성능 최적화 전략.May 13, 2025 am 12:06 AM

phPapplicationSCanBeoptimizedForsPeedandefficiencyby : 1) ENABLEOPCACHEINPHP.INI, 2) PREPAREDSTATEMENTSWITHPDOFORDATABASEQUERIES 사용

PHP 이메일 검증 : 이메일이 올바르게 전송되도록합니다PHP 이메일 검증 : 이메일이 올바르게 전송되도록합니다May 13, 2025 am 12:06 AM

phpeMailValidationInvoLvestHreesteps : 1) formatValidationUsingRegularexpressionsTochemailformat; 2) dnsValidationToErethedomainHasaValidMxRecord; 3) smtpvalidation, theSTHOROUGHMETHOD, theCheckSiftheCefTHECCECKSOCCONNECTERTETETETETETETWERTETWERTETWER

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.