非 WSDL PHP 调用

str*_*onn 3 php wsdl

我是 php 新手,希望将网站与一些租赁软件集成。他们使用非 WSDL 模式服务并提供了这段代码,但我对“this-is-the-action-uri”有点困惑。我的猜测是这是我需要调用的方法。

    $client = new SoapClient(NULL, array(
    'location' => '21.ip2.ip3.ip4/r2ws_v5/servlet/messagerouter',
    'uri' => 'urn:this-is-the-action-uri',
    'exceptions' => 1,
    );
Run Code Online (Sandbox Code Playgroud)

我可以打电话并得到回复。

http://21.ip2.ip3.ip4:8080/r2ws_v5/jsp/UBS_GetAvailability.jsp
Run Code Online (Sandbox Code Playgroud)

响应是这样开始的。

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<ns1:getAvailabilityByItemResponse xmlns:ns1="UBS/R2" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<response>
<product>
<productID xsi:type="xsd:string">TESTUB</productID>
<level xsi:type="xsd:int">1</level>
<description xsi:type="xsd:string">
<![CDATA[ testub ]]>
</description>
</level>
Run Code Online (Sandbox Code Playgroud)

您能否告诉我在这种情况下“uri”参数应该是什么或者它应该如何格式化?

小智 5

嗨,只需创建一个 PHP 文件并将以下代码放入您的 PHP 文件中。

$xmlRequest = "<SOAP:Envelope xmlns:SOAP=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" .
    "<SOAP:Body>" .
    "<getAvailabilityByItem xmlns=\"UBS/R2WebServices/AvailabilityService\">" .
        "<request>" .
            "<detail xsi:type=\"xsd:string\">0</detail>" .
            "<products>".
                "<product>" .
                    "<type xsi:type=\"xsd:int\">0</type>" .
                    "<productID xsi:type=\"xsd:string\"><![CDATA[DE014SML]]></productID>" .
                    "<startDate xsi:type=\"xsd:date\">12/07/2014</startDate>" .
                    "<startTime xsi:type=\"xsd:timeInstant\">8:00 AM</startTime>" .
                    "<endDate xsi:type=\"xsd:date\">12/08/2014</endDate>" .
                    "<endTime xsi:type=\"xsd:timeInstant\">12:00 PM</endTime>" .
                "</product>".
            "</products>" .
        "</request>" .
    "</getAvailabilityByItem>" .
    "</SOAP:Body>" .
    "</SOAP:Envelope>" ;

$location_URL = 'http://21.ip2.ip3.ip4/r2ws_v5/servlet/messagerouter';

$client = new SoapClient(null, array(
'location' => $location_URL,
'uri' => "",
'trace' => 1,
    ));
$order_return = $client->__doRequest($xmlRequest, $location_URL, '' , 1);
Run Code Online (Sandbox Code Playgroud)

希望你找到了解决方案;)