首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从PHP调用SoapServer

如何从PHP调用SoapServer
EN

Stack Overflow用户
提问于 2018-05-29 14:13:08
回答 1查看 52关注 0票数 0

到目前为止,我还未能通过PHP成功地将参数传递到请求中。

代码语言:javascript
复制
<?php

class MockSoapClient extends \SoapClient
{
    public function __doRequest($request, $location, $action, $version, $one_way = 0)
    {
        echo $request.PHP_EOL;

        return '';
    }
}

$client = new MockSoapClient(
    'http://www.saiasecure.com/webservice/shipment/soap.asmx?wsdl',
    [
        'trace' => 1,
        'soap_version' => SOAP_1_1,
    ]
);

$client->__soapCall(
    'GetByProNumber',
    [
        'parameters' => [
            'UserID' => 'username',
            'Password' => 'password',
            'TestMode' => 'Y',
            'ProNumber' => '123',
        ]
    ]
);

运行于: php test.php \ xmllint -format -

获取输出:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.SaiaSecure.com/WebService/Shipment">
  <SOAP-ENV:Body>
    <ns1:GetByProNumber/>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

期望输出在GetByProNumber元素中包含某种形式的参数。

PHP版本: 7.0.30 (Ubuntu 16.04)

有一些“没有bug”的报告非常类似于这个问题,但是我无法洞察要改变什么才能让这个问题发挥作用。https://bugs.php.net/bug.php?id=33366

有人有什么见解或建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-29 14:43:16

我刚刚检查了您的wsdl,似乎正确的参数数组应该如下所示:

代码语言:javascript
复制
[
    'parameters' => [
        'request' => [
            'UserID' => 'username',
            'Password' => 'password',
            'TestMode' => 'Y',
            'ProNumber' => '123',
        ]
    ]
]

那么输出会是这样的:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.SaiaSecure.com/WebService/Shipment"><SOAP-ENV:Body><ns1:GetByProNumber><ns1:request><ns1:UserID>username</ns1:UserID><ns1:Password>password</ns1:Password><ns1:TestMode>Y</ns1:TestMode><ns1:ProNumber>123</ns1:ProNumber></ns1:request></ns1:GetByProNumber></SOAP-ENV:Body></SOAP-ENV:Envelope>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50586568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档