WebService-php- 2(17)
wsdl example
<?xml version =<span>'</span><span>1.0</span><span>'</span> encoding =<span>'</span><span>UTF-8</span><span>'</span> ?> <<span>definitions targetNamespace</span>=<span>'</span><span>http://localhost/00/</span><span>'</span><span> xmlns:tns</span>=<span>'</span><span>http://localhost/00/</span><span>'</span><span> xmlns:soap</span>=<span>'</span><span>http://schemas.xmlsoap.org/wsdl/soap/</span><span>'</span><span> xmlns:xsd</span>=<span>'</span><span>http://www.w3.org/2001/XMLSchema</span><span>'</span><span> xmlns:soapenc</span>=<span>'</span><span>http://schemas.xmlsoap.org/soap/encoding/</span><span>'</span><span> xmlns:wsdl</span>=<span>'</span><span>http://schemas.xmlsoap.org/wsdl/</span><span>'</span><span> xmlns</span>=<span>'</span><span>http://schemas.xmlsoap.org/wsdl/</span><span>'</span>> <!--<types> 元素定义 web service 使用的数据类型,WSDL 使用 XML Schema 语法来定义数据类型,也可以自定义Schema不包含的类型--> <types> <xsd:schema xmlns:xsd=<span>"</span><span>http://www.w3.org/2001/XMLSchema</span><span>"</span><span> targetNamespace</span>=<span>"</span><span>http://localhost/00/</span><span>"</span>> </xsd:schema> </types> <!-- <message><span> 元素可定义每个消息的部件,以及相关联的数据类型. </span>--> <message name=<span>'</span><span>testRequest</span><span>'</span>> <part name=<span>"</span><span>term</span><span>"</span> type=<span>"</span><span>xsd:string</span><span>"</span>/> </message> <message name=<span>'</span><span>testResponse</span><span>'</span>> <part name=<span>"</span><span>value</span><span>"</span> type=<span>"</span><span>xsd:string</span><span>"</span>/> </message> <!-- <portType><span> 元素是最重要的 WSDL 元素.它可描述一个 web service、可被执行的操作,以及相关的消息. 它告诉你去哪个WebService的连接点,扮演了一个控制者. </span>--> <portType name=<span>'</span><span>oplist</span><span>'</span>> <operation name=<span>'</span><span>test</span><span>'</span>> <input message=<span>'</span><span>tns:testRequest</span><span>'</span>/> <output message=<span>'</span><span>tns:testResponse</span><span>'</span>/> </operation> </portType> <!--<binding> 元素为每个端口定义消息格式和协议细节--> <binding name=<span>'</span><span>cartSoap</span><span>'</span> type=<span>'</span><span>tns:oplist</span><span>'</span>> <!--style:属性可取值 <span>"</span><span>rpc</span><span>"</span> 或 <span>"</span><span>document</span><span>"</span>,ransport:属性定义了要使用的 SOAP 协议.在这个例子中我们使用 HTTP--> <soap:binding style=<span>'</span><span>rpc</span><span>'</span><span> transport</span>=<span>'</span><span>http://schemas.xmlsoap.org/soap/http</span><span>'</span>/> <!--operation 元素定义了每个端口提供的操作符,对于每个操作,相应的 SOAP 行为都需要被定义--> <operation name=<span>'</span><span>test</span><span>'</span>> <soap:operation soapAction=<span>'</span><span>http://www.cwtservice.cn/newOperation/</span><span>'</span>/> <input> <soap:body use=<span>'</span><span>encoded</span><span>'</span> <span>namespace</span>=<span>'</span><span>urn:xmethods-delayed-quotes</span><span>'</span><span> encodingStyle</span>=<span>'</span><span>http://schemas.xmlsoap.org/soap/encoding/</span><span>'</span>/> </input> <output> <soap:body use=<span>'</span><span>encoded</span><span>'</span> <span>namespace</span>=<span>'</span><span>urn:xmethods-delayed-quotes</span><span>'</span><span> encodingStyle</span>=<span>'</span><span>http://schemas.xmlsoap.org/soap/encoding/</span><span>'</span>/> </output> </operation> </binding> <!--<service>包含一个或者多个port元素,每个port元素表示一个不同的Web服务--> <service name=<span>'</span><span>shopWS</span><span>'</span>> <port name=<span>'</span><span>cartSoap</span><span>'</span> binding=<span>'</span><span>tns:cartSoap</span><span>'</span>> <soap:address location=<span>'</span><span>http://localhost/00/wss.php</span><span>'</span>/> </port> </service> </definitions>
Server side example:
<span>function test($x) { </span><span>return</span><span> $x; } $ss </span>= <span>new</span> SoapServer(<span>'</span><span>http://localhost/00/wsdl.xml</span><span>'</span><span>); $ss</span>->addFunction(<span>'</span><span>test</span><span>'</span><span>); $ss</span>->handle();
Client call:
$soap = <span>new</span> soapClient(<span>'</span><span>http://localhost/00/wsdl.xml</span><span>'</span>,array(<span>'</span><span>trace</span><span>'</span>=><span>true</span><span>)); var_dump($soap</span>->test(<span>'</span><span>10086</span><span>'</span>));
Passing and returning array parameters
If the parameters passed or returned are arrays, you can explain them in the message tag.
<message name=<span>'</span><span>testRequest</span><span>'</span>> <part name=<span>"</span><span>term</span><span>"</span> type=<span>"</span><span>xsd:ArrayOfString</span><span>"</span>/> </message> <message name=<span>'</span><span>testResponse</span><span>'</span>> <part name=<span>"</span><span>value</span><span>"</span> type=<span>"</span><span>xsd:ArrayOfString</span><span>"</span>/> </message>
XML-RPC call
XML-<span>RPC可以理解为简化版的soap,对数据的包装相对简洁. php.ini中,要打开extension</span>=php_xmlrpc.dll
<span>/*</span><span> 求和函数 注意,rpc服务器在调用函数时,传的参数是这样的: array(0=>'函数名' , 1=>array(实参1,实参2,...实参N) , 2=>NULL) </span><span>*/</span><span> function hello() { </span><span>return</span> <span>'</span><span>hello</span><span>'</span><span>; } function sum($method , $args , $extra) { </span><span>return</span><span> array_sum($args); } </span><span>//</span><span> 创建RPC Server</span> $server =<span> xmlrpc_server_create (); xmlrpc_server_register_method ($server , </span><span>'</span><span>hello</span><span>'</span> , <span>'</span><span>hello</span><span>'</span><span>); xmlrpc_server_register_method ($server , </span><span>'</span><span>sum</span><span>'</span> , <span>'</span><span>sum</span><span>'</span><span>); </span><span>//</span><span> 收取请求</span> $request =<span> $HTTP_RAW_POST_DATA; </span><span>//</span><span>执行调用客户端的XML请求后获取执行结果</span> $xmlrpc_response = xmlrpc_server_call_method($server, $request , <span>null</span><span>); </span><span>//</span><span>把函数处理后的结果XML进行输出</span> header(<span>'</span><span>Content-Type: text/xml</span><span>'</span><span>); echo $xmlrpc_response; </span><span>//</span><span>销毁XML-RPC服务器端资源</span> xmlrpc_server_destroy($server);
Client:
<span>class</span><span> rpcclient { </span><span>protected</span><span> $url; </span><span>public</span> function __construct($url=<span>''</span><span> ) { $</span><span>this</span>->url =<span> $url; } </span><span>protected</span><span> function query($request) { $context </span>= stream_context_create(array(<span>'</span><span>http</span><span>'</span> =><span> array( </span><span>'</span><span>method</span><span>'</span> => <span>"</span><span>POST</span><span>"</span><span>, </span><span>'</span><span>header</span><span>'</span> => <span>"</span><span>Content-Type: text/xml</span><span>"</span><span>, </span><span>'</span><span>content</span><span>'</span> =><span> $request ))); $xml </span>= file_get_contents($<span>this</span>->url, <span>false</span><span>, $context); </span><span>return</span><span> xmlrpc_decode($xml); } </span><span>public</span><span> function __call($method , $args) { $request </span>=<span> xmlrpc_encode_request($method , $args); </span><span>return</span> $<span>this</span>-><span>query($request); } } $rpc </span>= <span>new</span> rpcclient(<span>'</span><span>http://localhost/00/rpcs.php</span><span>'</span><span>); var_dump($rpc</span>-><span>hello()); var_dump($rpc</span>->sum(<span>4</span>,<span>5</span>,<span>6</span>));
The difference between WebService and json Api
WebService json API
Data encapsulation XML Json
Complexity High ceddie _ on data encapsulation †XML Documentation
The above has introduced WebService-php-2 (17), including the relevant content. I hope it will be helpful to friends who are interested in PHP tutorials.

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Many users will choose the Huawei brand when choosing smart watches. Among them, Huawei GT3pro and GT4 are very popular choices. Many users are curious about the difference between Huawei GT3pro and GT4. Let’s introduce the two to you. . What are the differences between Huawei GT3pro and GT4? 1. Appearance GT4: 46mm and 41mm, the material is glass mirror + stainless steel body + high-resolution fiber back shell. GT3pro: 46.6mm and 42.9mm, the material is sapphire glass + titanium body/ceramic body + ceramic back shell 2. Healthy GT4: Using the latest Huawei Truseen5.5+ algorithm, the results will be more accurate. GT3pro: Added ECG electrocardiogram and blood vessel and safety

HTTP status code 520 means that the server encountered an unknown error while processing the request and cannot provide more specific information. Used to indicate that an unknown error occurred when the server was processing the request, which may be caused by server configuration problems, network problems, or other unknown reasons. This is usually caused by server configuration issues, network issues, server overload, or coding errors. If you encounter a status code 520 error, it is best to contact the website administrator or technical support team for more information and assistance.

Why Snipping Tool Not Working on Windows 11 Understanding the root cause of the problem can help find the right solution. Here are the top reasons why the Snipping Tool might not be working properly: Focus Assistant is On: This prevents the Snipping Tool from opening. Corrupted application: If the snipping tool crashes on launch, it might be corrupted. Outdated graphics drivers: Incompatible drivers may interfere with the snipping tool. Interference from other applications: Other running applications may conflict with the Snipping Tool. Certificate has expired: An error during the upgrade process may cause this issu simple solution. These are suitable for most users and do not require any special technical knowledge. 1. Update Windows and Microsoft Store apps

Understand the meaning of HTTP 301 status code: common application scenarios of web page redirection. With the rapid development of the Internet, people's requirements for web page interaction are becoming higher and higher. In the field of web design, web page redirection is a common and important technology, implemented through the HTTP 301 status code. This article will explore the meaning of HTTP 301 status code and common application scenarios in web page redirection. HTTP301 status code refers to permanent redirect (PermanentRedirect). When the server receives the client's

How to use NginxProxyManager to implement automatic jump from HTTP to HTTPS. With the development of the Internet, more and more websites are beginning to use the HTTPS protocol to encrypt data transmission to improve data security and user privacy protection. Since the HTTPS protocol requires the support of an SSL certificate, certain technical support is required when deploying the HTTPS protocol. Nginx is a powerful and commonly used HTTP server and reverse proxy server, and NginxProxy

HTTP status code 403 means that the server rejected the client's request. The solution to http status code 403 is: 1. Check the authentication credentials. If the server requires authentication, ensure that the correct credentials are provided; 2. Check the IP address restrictions. If the server has restricted the IP address, ensure that the client's IP address is restricted. Whitelisted or not blacklisted; 3. Check the file permission settings. If the 403 status code is related to the permission settings of the file or directory, ensure that the client has sufficient permissions to access these files or directories, etc.

Solution: 1. Check the Content-Type in the request header; 2. Check the data format in the request body; 3. Use the appropriate encoding format; 4. Use the appropriate request method; 5. Check the server-side support.

Quick Application: Practical Development Case Analysis of PHP Asynchronous HTTP Download of Multiple Files With the development of the Internet, the file download function has become one of the basic needs of many websites and applications. For scenarios where multiple files need to be downloaded at the same time, the traditional synchronous download method is often inefficient and time-consuming. For this reason, using PHP to download multiple files asynchronously over HTTP has become an increasingly common solution. This article will analyze in detail how to use PHP asynchronous HTTP through an actual development case.
