php - 如何使用 PHP 和 XML 示例创建 SOAP 请求?
问题描述
我有下面的XML:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:proc="http://servicos.saude.gov.br/sigtap/v1/procedimentoservice" xmlns:grup="http://servicos.saude.gov.br/schema/sigtap/procedimento/nivelagregacao/v1/grupo" xmlns:sub="http://servicos.saude.gov.br/schema/sigtap/procedimento/nivelagregacao/v1/subgrupo" xmlns:com="http://servicos.saude.gov.br/schema/corporativo/v1/competencia" xmlns:pag="http://servicos.saude.gov.br/wsdl/mensageria/v1/paginacao">
<soap:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken wsu:Id="Id-0001334008436683-000000002c4a1908-1" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username>SIGTAP.PUBLICO</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">sigtap#2015public</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soap:Header>
<soap:Body>
<proc:requestPesquisarProcedimentos>
<grup:codigoGrupo>05</grup:codigoGrupo>
<sub:codigoSubgrupo>04</sub:codigoSubgrupo>
<com:competencia>201501</com:competencia>
<pag:Paginacao>
<pag:registroInicial>01</pag:registroInicial>
<pag:quantidadeRegistros>20</pag:quantidadeRegistros>
<pag:totalRegistros>100</pag:totalRegistros>
</pag:Paginacao>
</proc:requestPesquisarProcedimentos>
</soap:Body>
</soap:Envelope>
如何创建 PHP 请求?
我在尝试:
$soapClientOptions = array(
'Username' => 'SIGTAP.PUBLICO',
'Password' => 'sigtap#2015public'
);
$client = new SoapClient("https://servicoshm.saude.gov.br/sigtap/ProcedimentoService/v1?wsdl", $soapClientOptions);
$params = array(
'codigoGrupo' => '05',
'competencia' => '201901',
'Paginacao' => array(
'registroInicial' => '01',
'quantidadeRegistros' => '20',
'totalRegistros' => '100'
)
);
$response = $client->__soapCall("pesquisarProcedimentos", array($params));
var_dump($response);
我是 SOAP 的菜鸟,我不知道如何创建正确的代码。我使用的代码不起作用。我有一个强制电路异常。
有什么帮助吗?
解决方案
如果您不想想知道如何在 PhpStorm 或任何体面的 IDE 中使用 OOP 方法 + 具有自动完成功能的本机 PHP SoapClient 类来构造 PHP 请求,我强烈建议您使用 WSDL 到 PHP 生成器。试试https://github.com/WsdlToPhp/PackageGenerator。对于 WsSecurity 标头,您还可以使用https://github.com/WsdlToPhp/WsSecurity。
推荐阅读
- javascript - 来自 react-native-elements 的样式卡:垂直对齐标题和图标
- c - 如何将 2 个数组传递给一个函数,让用户在这 2 个数组中写一些东西,并将它们都返回给 C 中的程序?
- r - 根据 R 中的多个 ffields 比较列值中的字符串值
- bash - 在bash中对数组进行数字排序
- c# - C# Excel VSTO OLE DB 参数错误必须声明标量变量
- git - 在将我的分支与本地仓库中的 Master 合并,然后在 Github 中推送到远程源
- c# - 如何在我的 Discord Bot 中使用数据库?(使用 Discord.Net 和 psotgresql)
- r - 如何在 R 中使用 tidyeval 创建一个包含所有级别因子的小型预测数据集?
- c++ - Qt RegExp 验证器 C++
- scala - 我如何通过字段相等来匹配scala中的两个集合