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)); 🎜>
$파일 켜기 }
在Web开发领域中,Web服务是一种非常重要的技术,它可以使不同的应用程序之间互相通信,从而构建更加复杂和强大的系统。在本文中,我们将深入探讨如何使用PHP和SOAP实现Web服务的调用和开发。SOAP(SimpleObjectAccessProtocol)是一种基于XML的协议,它用于在不同的应用程序之间进行信息交换。SOAP是一个重要的Web服务标

PHP和SOAP:如何实现数据的同步和异步处理引言:在现代Web应用程序中,数据的同步和异步处理变得越来越重要。同步处理指的是一次只处理一个请求,并等待该请求完成后再处理下一个请求;而异步处理则是同时处理多个请求,并不等待某个请求的完成。在本文中,我们将介绍如何使用PHP和SOAP来实现数据的同步和异步处理。一、SOAP简介SOAP(SimpleObjec

PHP和SOAP:如何实现远程过程调用(RPC)简介:近年来,随着分布式系统的兴起,远程过程调用(RemoteProcedureCall,RPC)在Web开发中被广泛采用。本文将介绍如何使用PHP和SOAP实现RPC,以及通过代码示例演示其用法。一、什么是远程过程调用(RPC)?远程过程调用(RemoteProcedureCall,RPC)是一种通信

随着互联网技术的不断发展,越来越多的企业级应用需要向其它应用程序提供接口以实现数据和业务的交互。在这种情况下,我们需要一种可靠的协议来传输数据并确保数据的完整性和安全性。SOAP(SimpleObjectAccessProtocol)就是一种基于XML的协议,可用于在Web环境中实现应用之间的通信。而PHP作为一种流行的Web编程语言,

如何使用PHP和SOAP实现数据的压缩和解压缩导言:在现代互联网应用中,数据的传输是非常常见的操作,然而,随着互联网应用的不断发展,数据量的增加和传输速度的要求,合理地使用数据压缩和解压缩技术成为了一个非常重要的话题。在PHP开发中,我们可以使用SOAP(SimpleObjectAccessProtocol)协议来实现数据的压缩和解压缩。本文将介绍如何

如何使用PHP和SOAP实现Web服务的部署和发布引言:在当今互联网时代,Web服务的部署和发布成为了一个非常重要的话题。PHP是一种流行的服务器端编程语言,而SOAP(SimpleObjectAccessProtocol)是一种XML协议,用于在Web服务之间进行通信。本文将向您介绍如何使用PHP和SOAP实现Web服务的部署和发布,并提供一些代码示

利用PHP和SOAP构建基于Web的应用程序的完整指南在当今互联网的时代,基于Web的应用程序已经成为了管理和交互数据的重要工具。PHP作为一种强大的开发语言,可以与其他技术进行无缝集成,而SOAP(SimpleObjectAccessProtocol)作为一种基于XML的通信协议,为我们提供了一种简单、标准和可扩展的方法来构建Web服务。本文将为您提

在实际成功渗透过程中,漏洞的利用都是多个技术的融合,最新技术的实践,本次渗透利用sqlmap来确认注入点,通过sqlmap来获取webshell,结合msf来进行ms16-075的提权,最终获取了目标服务器的系统权限。本文算是漏洞利用的一个新的拓展,在常规Nday提权不成功的情况下,结合msf进行ms16-075成功提权的一个经典案例。1.1.1扫描soap注入漏洞1.使用awvs中的webservicesscanner进行漏洞扫描打开awvs,选择webservicesscanner进行漏洞扫


핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경
