【问题标题】:Php Soap function argumentsPhp Soap 函数参数
【发布时间】:2013-04-01 12:34:51
【问题描述】:

我正在尝试创建一个简单的 php Soap 服务器。

问题在于,虽然我在 wsdl 文件中设置了特定的参数类型,但在我的情况下,我设置了整数,我可以从 php 使用另一种参数类型(字符串、数组、Assoc 数组)进行方法调用。

理论上,如果php参数类型和wsdl参数类型不一样应该不会报错吧?在我的情况下,如果我在服务器上用数组调用函数,我得到数组,我在服务器上用字符串调用相同的函数,得到字符串等。

如何编辑下面的代码,使我的方法“doMyBookSearch”只接受在 wsdl 上声明的整数。

客户代码:

    try{
  $sClient = new SoapClient('sample.wsdl',array('trace'=>true));
    print_r($sClient->doMyBookSearch('test'));  //I call the function with a string, and not integer as WSDL
} catch(SoapFault $e){
var_dump($e);
}

服务器代码:

$server = new SoapServer("sample.wsdl");

function doMyBookSearch($yourName){
  return 'Works'; //return string
}

WSDL:

    <types>
    <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:MyBookSearch">
        <xsd:element  name="bookTitle">
            <xsd:simpleType>
                <xsd:restriction base="xsd:integer">
                    <xsd:minInclusive value="0"/>
                    <xsd:maxInclusive value="120"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:element>
    </xsd:schema>   
</types>

<message name="doMyBookSearch">
    <part name="bookTitle" type="tns:bookTitle" />
</message>

<message name="doMyBookSearchResponse">
    <part name="return" type="xsd:string" />
</message>  

<portType name="MyBookSearchPort">
    <operation name="doMyBookSearch">
        <input message="tns:doMyBookSearch" />
        <output message="tns:doMyBookSearchResponse" />
    </operation>
</portType>

【问题讨论】:

    标签: php soap wsdl


    【解决方案1】:

    在这种情况下,PHP 并不真正关心类型。 根据我对 SOAP 和 PHP 的经验,所有变量都以字符串形式发送/接收,并且不遵守 WSDL 文件的限制。

    一种解决方法是自己在 doMyBookSearch() 函数中进行检查,并在需要时抛出错误。

    【讨论】:

    • 所以你说如果我用java编写相同的soap服务器而不是从一个php客户端调用doMyBookSearch,它的参数与wsdl中指定的参数不同,那么客户端应该会出错?无需手动抛出。
    • 我认为应该,但我不是 100% 确定。测试一下就好了。
    • 使用 \SoarVar 函数尊重类型
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多