一个.NET调用PHP Web Service的典型例子
最近一个项目由"WinForm直接访问DB2"移植到"WinForm通过PHP Web Service来访问DB2”。
这个命题的难点不是访问DB2,而是.NET调用PHP Web Service。对于我这个长期作.NET,之前一直以为只有通过.NET调用PHP Web Service……的人来说,真是有点强“聪”所难了。
但是问题还是要解决的,期限就摆在眼前呢。经过一番调查,终于有了眉目,现在分享给大家。
首先要说明的,PHP服务器需要至少需要两个文件——一个WSDL文件和一个PHP文件。WSDL文件是一种机读的XML文件,用于描述WebService提供的服务和调用方法(对于.NET则可以自动生成调用代码,十分好用),php文件就是真正实现的WEB服务了。
1)PHP服务器端代码
1-1)TestWebService.php代码
<ol class="dp-c"> <li class="alt"><span><span>TestWebService.php </span></span></li> <li><span><?php </SPAN><li class="alt"> <span></span><span class="keyword"><strong><font color="#006699">class</font></strong></span><span> TestWebService </span> </li></span></li> <li><span>{ </span></li> <li class="alt"> <span> </span><span class="keyword"><strong><font color="#006699">public</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">function</font></strong></span><span> HelloWorld() </span> </li> <li><span> { </span></li> <li class="alt"> <span> </span><span class="keyword"><strong><font color="#006699">return</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">array</font></strong></span><span>(</span><span class="string"><font color="#0000ff">"HelloWorldResult"</font></span><span>=></span><span class="string"><font color="#0000ff">"Hello"</font></span><span>); </span> </li> <li><span> } </span></li> <li class="alt"><span> </span></li> <li> <span> </span><span class="keyword"><strong><font color="#006699">public</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">function</font></strong></span><span> GetArray(</span><span class="vars"><font color="#dd0000">$args</font></span><span>) </span> </li> <li class="alt"><span> { </span></li> <li> <span> </span><span class="comment"><font color="#008200">/* </font></span> </li> <li class="alt"><span><span class="comment"><font color="#008200"> 注意,Web Service的方法在声明时至多一个参数, </font></span> </span></li> <li><span><span class="comment"><font color="#008200"> 可是在调用该方法时就必须传value1,value2两个参数。 </font></span> </span></li> <li class="alt"><span><span class="comment"><font color="#008200"> (这一点十分令人费解,我的理解是,在调用该方法时,系统把所有参数都放到一个对象里传过来的) </font></span> </span></li> <li><span><span class="comment"><font color="#008200"> */</font></span><span> </span></span></li> <li class="alt"><span> </span></li> <li> <span> </span><span class="vars"><font color="#dd0000">$value1</font></span><span> = </span><span class="vars"><font color="#dd0000">$args</font></span><span>->value1; </span> </li> <li class="alt"> <span> </span><span class="vars"><font color="#dd0000">$value2</font></span><span> = </span><span class="vars"><font color="#dd0000">$args</font></span><span>->value2;</span><span class="comment"><font color="#008200">//这两句是获取真正的参数 </font></span><span> </span> </li> <li><span> </span></li> <li class="alt"> <span> </span><span class="vars"><font color="#dd0000">$arry</font></span><span> = </span><span class="keyword"><strong><font color="#006699">array</font></strong></span><span>(</span><span class="vars"><font color="#dd0000">$value1</font></span><span>,</span><span class="vars"><font color="#dd0000">$value2</font></span><span>); </span> </li> <li><span> </span></li> <li class="alt"> <span> </span><span class="comment"><font color="#008200">//返回值也很特别,不是直接返回$arry,而是把它放到一个对象里再返回。 </font></span><span> </span> </li> <li> <span> </span><span class="keyword"><strong><font color="#006699">return</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">array</font></strong></span><span>(</span><span class="string"><font color="#0000ff">"GetArrayResult"</font></span><span>=></span><span class="vars"><font color="#dd0000">$arry</font></span><span>); </span> </li> <li class="alt"><span> } </span></li> <li><span>} </span></li> <li class="alt"> <span></span><span class="comment"><font color="#008200">//创建WebSevice实例 </font></span><span> </span> </li> <li> <span></span><span class="vars"><font color="#dd0000">$server</font></span><span> = </span><span class="keyword"><strong><font color="#006699">new</font></strong></span><span> SoapServer(</span><span class="string"><font color="#0000ff">"TestWebService.wsdl"</font></span><span>); </span> </li> <li class="alt"> <span></span><span class="comment"><font color="#008200">//指定类名 </font></span><span> </span> </li> <li> <span></span><span class="vars"><font color="#dd0000">$server</font></span><span>->setClass(</span><span class="string"><font color="#0000ff">"TestWebService"</font></span><span>); </span> </li> <li class="alt"> <span></span><span class="vars"><font color="#dd0000">$server</font></span><span>->handle(); </span> </li> <li><span>?> </span></li> </ol>
1-2)TestWebService.wsdl代码
<ol class="dp-xml"> <li class="alt"><span><span>TestWebService.wsdl </span></span></li> <li> <span></span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">xml</span></font></strong><span> </span><span class="attribute"><font color="#ff0000">version</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"1.0"</font></span><span> </span><span class="attribute"><font color="#ff0000">encoding</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"utf-8"</font></span><span class="tag"><strong><font color="#006699">?></font></strong></span><span> </span> </li> <li class="alt"> <span></span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:definitions</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">xmlns:soap</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"http://schemas.xmlsoap.org/wsdl/soap/"</font></span><span> </span><span class="attribute"><font color="#ff0000">xmlns:tm</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"http://microsoft.com/wsdl/mime/textMatching/"</font></span><span> </span><span class="attribute"><font color="#ff0000">xmlns:soapenc</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"http://schemas.xmlsoap.org/soap/encoding/"</font></span><span> </span><span class="attribute"><font color="#ff0000">xmlns:mime</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"http://schemas.xmlsoap.org/wsdl/mime/"</font></span><span> </span><span class="attribute"><font color="#ff0000">xmlns:tns</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"http://tempuri.org/"</font></span><span> </span><span class="attribute"><font color="#ff0000">xmlns:s</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"http://www.w3.org/2001/XMLSchema"</font></span><span> </span><span class="attribute"><font color="#ff0000">xmlns:soap12</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"http://schemas.xmlsoap.org/wsdl/soap12/"</font></span><span> </span><span class="attribute"><font color="#ff0000">xmlns:http</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"http://schemas.xmlsoap.org/wsdl/http/"</font></span><span> </span><span class="attribute"><font color="#ff0000">targetNamespace</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"http://tempuri.org/"</font></span><span> </span><span class="attribute"><font color="#ff0000">xmlns:wsdl</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"http://schemas.xmlsoap.org/wsdl/"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:types</span><span class="tag">></span></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">s:schema</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">elementFormDefault</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"qualified"</font></span><span> </span><span class="attribute"><font color="#ff0000">targetNamespace</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"http://tempuri.org/"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">s:element</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"HelloWorld"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">s:complexType</span></span></font></strong><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">s:element</span><span class="tag">></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">s:element</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"HelloWorldResponse"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">s:complexType</span><span class="tag">></span></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">s:sequence</span><span class="tag">></span></span></font></strong><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">s:element</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">minOccurs</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"0"</font></span><span> </span><span class="attribute"><font color="#ff0000">maxOccurs</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"1"</font></span><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"HelloWorldResult"</font></span><span> </span><span class="attribute"><font color="#ff0000">type</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"s:string"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">s:sequence</span><span class="tag">></span></font></strong><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">s:complexType</span><span class="tag">></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">s:element</span><span class="tag">></span></font></strong><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">s:element</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"GetArray"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">s:complexType</span><span class="tag">></span></span></font></strong><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">s:sequence</span><span class="tag">></span></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">s:element</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">minOccurs</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"0"</font></span><span> </span><span class="attribute"><font color="#ff0000">maxOccurs</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"1"</font></span><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"value1"</font></span><span> </span><span class="attribute"><font color="#ff0000">type</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"s:string"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">s:element</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">minOccurs</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"0"</font></span><span> </span><span class="attribute"><font color="#ff0000">maxOccurs</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"1"</font></span><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"value2"</font></span><span> </span><span class="attribute"><font color="#ff0000">type</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"s:string"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">s:sequence</span><span class="tag">></span></font></strong><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">s:complexType</span><span class="tag">></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">s:element</span><span class="tag">></span></font></strong><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">s:element</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"GetArrayResponse"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">s:complexType</span><span class="tag">></span></span></font></strong><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">s:sequence</span><span class="tag">></span></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">s:element</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">minOccurs</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"0"</font></span><span> </span><span class="attribute"><font color="#ff0000">maxOccurs</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"1"</font></span><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"GetArrayResult"</font></span><span> </span><span class="attribute"><font color="#ff0000">type</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"tns:ArrayOfString"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">s:sequence</span><span class="tag">></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">s:complexType</span><span class="tag">></span></font></strong><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">s:element</span><span class="tag">></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">s:complexType</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"ArrayOfString"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">s:sequence</span><span class="tag">></span></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">s:element</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">minOccurs</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"0"</font></span><span> </span><span class="attribute"><font color="#ff0000">maxOccurs</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"unbounded"</font></span><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"string"</font></span><span> </span><span class="attribute"><font color="#ff0000">nillable</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"true"</font></span><span> </span><span class="attribute"><font color="#ff0000">type</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"s:string"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">s:sequence</span><span class="tag">></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">s:complexType</span><span class="tag">></span></font></strong><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">s:schema</span><span class="tag">></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:types</span><span class="tag">></span></font></strong><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:message</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"HelloWorldSoapIn"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:part</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"parameters"</font></span><span> </span><span class="attribute"><font color="#ff0000">element</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"tns:HelloWorld"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:message</span><span class="tag">></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:message</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"HelloWorldSoapOut"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:part</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"parameters"</font></span><span> </span><span class="attribute"><font color="#ff0000">element</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"tns:HelloWorldResponse"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:message</span><span class="tag">></span></font></strong><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:message</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"GetArraySoapIn"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:part</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"parameters"</font></span><span> </span><span class="attribute"><font color="#ff0000">element</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"tns:GetArray"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:message</span><span class="tag">></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:message</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"GetArraySoapOut"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:part</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"parameters"</font></span><span> </span><span class="attribute"><font color="#ff0000">element</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"tns:GetArrayResponse"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:message</span><span class="tag">></span></font></strong><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:portType</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"TestWebServiceSoap"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:operation</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"HelloWorld"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:input</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">message</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"tns:HelloWorldSoapIn"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:output</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">message</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"tns:HelloWorldSoapOut"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:operation</span><span class="tag">></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:operation</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"GetArray"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:input</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">message</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"tns:GetArraySoapIn"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:output</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">message</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"tns:GetArraySoapOut"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:operation</span><span class="tag">></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:portType</span><span class="tag">></span></font></strong><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:binding</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"TestWebServiceSoap"</font></span><span> </span><span class="attribute"><font color="#ff0000">type</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"tns:TestWebServiceSoap"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">soap:binding</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">transport</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"http://schemas.xmlsoap.org/soap/http"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:operation</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"HelloWorld"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">soap:operation</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">soapAction</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"http://tempuri.org/HelloWorld"</font></span><span> </span><span class="attribute"><font color="#ff0000">style</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"document"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:input</span><span class="tag">></span></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">soap:body</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">use</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"literal"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:input</span><span class="tag">></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:output</span><span class="tag">></span></span></font></strong><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">soap:body</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">use</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"literal"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:output</span><span class="tag">></span></font></strong><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:operation</span><span class="tag">></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:operation</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"GetArray"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">soap:operation</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">soapAction</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"http://tempuri.org/GetArray"</font></span><span> </span><span class="attribute"><font color="#ff0000">style</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"document"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:input</span><span class="tag">></span></span></font></strong><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">soap:body</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">use</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"literal"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:input</span><span class="tag">></span></font></strong><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:output</span><span class="tag">></span></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">soap:body</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">use</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"literal"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:output</span><span class="tag">></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:operation</span><span class="tag">></span></font></strong><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:binding</span><span class="tag">></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:binding</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"TestWebServiceSoap12"</font></span><span> </span><span class="attribute"><font color="#ff0000">type</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"tns:TestWebServiceSoap"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">soap12:binding</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">transport</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"http://schemas.xmlsoap.org/soap/http"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:operation</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"HelloWorld"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">soap12:operation</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">soapAction</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"http://tempuri.org/HelloWorld"</font></span><span> </span><span class="attribute"><font color="#ff0000">style</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"document"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:input</span><span class="tag">></span></span></font></strong><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">soap12:body</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">use</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"literal"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:input</span><span class="tag">></span></font></strong><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:output</span><span class="tag">></span></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">soap12:body</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">use</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"literal"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:output</span><span class="tag">></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:operation</span><span class="tag">></span></font></strong><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:operation</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"GetArray"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">soap12:operation</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">soapAction</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"http://tempuri.org/GetArray"</font></span><span> </span><span class="attribute"><font color="#ff0000">style</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"document"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:input</span><span class="tag">></span></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">soap12:body</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">use</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"literal"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:input</span><span class="tag">></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:output</span><span class="tag">></span></span></font></strong><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">soap12:body</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">use</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"literal"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:output</span><span class="tag">></span></font></strong><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:operation</span><span class="tag">></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:binding</span><span class="tag">></span></font></strong><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:service</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"TestWebService"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:port</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"TestWebServiceSoap"</font></span><span> </span><span class="attribute"><font color="#ff0000">binding</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"tns:TestWebServiceSoap"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">soap:address</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">location</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"http://localhost/phpmyadmin/ws/TestWebService.php"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:port</span><span class="tag">></span></font></strong><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">wsdl:port</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"TestWebServiceSoap12"</font></span><span> </span><span class="attribute"><font color="#ff0000">binding</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"tns:TestWebServiceSoap12"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"><span class="tag-name">soap12:address</span></span></font></strong><span> </span><span class="attribute"><font color="#ff0000">location</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"http://localhost/phpmyadmin/ws/TestWebService.php"</font></span><span> </span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span> </li> <li> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:port</span><span class="tag">></span></font></strong><span> </span> </li> <li class="alt"> <span> </span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:service</span><span class="tag">></span></font></strong><span> </span> </li> <li> <span></span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">wsdl:definitions</span><span class="tag">></span></font></strong><span> </span> </li> </ol>
WSDL的代码比较长,当方法很多时,手敲代码是不太可能的。有一个巧的办法,就是也用.NET实现一个不含真正方法体的Web Serivce,然后通过http://***/TestWebService.asmx?wsdl的方法生成wsdl代码文件。
关于WSDL文件,我要说明特别说明两点:
(1)soap:address结点是声明WebService的地址,在部署时要改成相应地址;
(2)一维数组的声明类型为ArrayOfType,字符串数组为ArrayOfString。如果Type不是简单类型,则Type需要另外声明。
2).NET客户端代码
先要添加Web引用,地址为WSDL文件的Http地址。
.NET调用PHP Web Service调用代码(C#)
<ol class="dp-xml"> <li class="alt"><span><span>//初始化WebService </span></span></li> <li> <span> localhost.TestWebService </span><span class="attribute"><font color="#ff0000">srv</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">new</font></span><span> localhost.TestWebService(); </span> </li> <li class="alt"><span> //调第一个方法 </span></li> <li> <span> string </span><span class="attribute"><font color="#ff0000">str</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">srv</font></span><span>.HelloWorld(); </span> </li> <li class="alt"><span> //调第二个方法 </span></li> <li> <span> string[] </span><span class="attribute"><font color="#ff0000">arry</font></span><span>= </span><span class="attribute-value"><font color="#0000ff">srv</font></span><span>.GetArray("string1","string2"); </span> </li> </ol>
.NET调用PHP Web Service总结:
(一)PHP是一种弱类型语言,检查错误比较困难。array类型也与一般理解的数组不同,它也有类似Hashtable的用法。
(二)PHP Web Service方法的传入参数、返回值都至多有一个,因为真正调用时的参数和返回值,都是包装到一个对象中传送的。
(三)PHP Web Service也支持自定义类型和自定义类型数组等复杂类型,但不支持多组数组。
(四)若返回值需要是多张二维表时,我浅薄的以为,可以传化一组字符串数组传送,格式为
[表1行数],[表1列数],[表1列名1],[表1列名2],……[表1列名N],[表1中按行列存放的值]
[表2行数],[表2列数],[表2列名1],[表2列名2],……[表2列名N],[表2中按行列存放的值]……
[表M行数],[表M列数],[表M列名1],[表M列名2],……[表M列名N],[表2中按行列存放的值]
按顺序将上面[]中的内容串成字符串数组,效率还不错,我测试10000行240列的数据,我有现成编解代码,有兴趣的可以向我索取.

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

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

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

문자열은 문자, 숫자 및 기호를 포함하여 일련의 문자입니다. 이 튜토리얼은 다른 방법을 사용하여 PHP의 주어진 문자열의 모음 수를 계산하는 방법을 배웁니다. 영어의 모음은 A, E, I, O, U이며 대문자 또는 소문자 일 수 있습니다. 모음이란 무엇입니까? 모음은 특정 발음을 나타내는 알파벳 문자입니다. 대문자와 소문자를 포함하여 영어에는 5 개의 모음이 있습니다. a, e, i, o, u 예 1 입력 : String = "Tutorialspoint" 출력 : 6 설명하다 문자열의 "Tutorialspoint"의 모음은 u, o, i, a, o, i입니다. 총 6 개의 위안이 있습니다

이 튜토리얼은 PHP를 사용하여 XML 문서를 효율적으로 처리하는 방법을 보여줍니다. XML (Extensible Markup Language)은 인간의 가독성과 기계 구문 분석을 위해 설계된 다목적 텍스트 기반 마크 업 언어입니다. 일반적으로 데이터 저장 AN에 사용됩니다

정적 바인딩 (정적 : :)는 PHP에서 늦은 정적 바인딩 (LSB)을 구현하여 클래스를 정의하는 대신 정적 컨텍스트에서 호출 클래스를 참조 할 수 있습니다. 1) 구문 분석 프로세스는 런타임에 수행됩니다. 2) 상속 관계에서 통화 클래스를 찾아보십시오. 3) 성능 오버 헤드를 가져올 수 있습니다.

PHP의 마법 방법은 무엇입니까? PHP의 마법 방법은 다음과 같습니다. 1. \ _ \ _ Construct, 객체를 초기화하는 데 사용됩니다. 2. \ _ \ _ 파괴, 자원을 정리하는 데 사용됩니다. 3. \ _ \ _ 호출, 존재하지 않는 메소드 호출을 처리하십시오. 4. \ _ \ _ get, 동적 속성 액세스를 구현하십시오. 5. \ _ \ _ Set, 동적 속성 설정을 구현하십시오. 이러한 방법은 특정 상황에서 자동으로 호출되어 코드 유연성과 효율성을 향상시킵니다.

PHP에서는 예측할 수없는 토큰을 사용하여 CSRF 공격을 효과적으로 방지 할 수 있습니다. 특정 방법은 다음과 같습니다. 1. 형태로 CSRF 토큰을 생성하고 포함시킨다. 2. 요청을 처리 할 때 토큰의 유효성을 확인하십시오.
