这是我的SOAP客户端请求代码:
<?php
$cf = "DTRMRA48P55D539C";
$chiave = "700400125745081";
$numdoc = "AV1871102";
$tipodoc = 1;
//$numid = $_POST['numid'];
$codoper = "PCCPLA66T11L719L";
$idag = "35852";
$wsdl = "https://portalws.inps.it/ws/wsCessioneQuintoWebTest/WsInpsCessioneQuinto.asmx?WSDL";
$local_cert = "C:\\Apache24\htdocs\sirio2.pem";
$soapClient = new SoapClient($wsdl, array('local_cert' => $local_cert, 'trace' => 1, 'soap_version' => SOAP_1_1));
try {
$result = $soapClient->RichiestaCedibilita(array('CodFiscale' => $cf, 'ChiavePensione' => $chiave, 'NumDocumento' => $numdoc, 'TipoDocumento' => 1, 'CodiceOperatore' => $codoper, 'IdentificativoAgenzia' => $idag));
print_r($soapClient->__getlastResponse());
$soap = print_r($soapClient->__getlastResponse());
print_r($soap);
}
catch (SoapFault $exception) {
echo $exception;
}
?>
这是我的回复:
<?xml version="1.0" encoding="utf-8" ?><DatiCedibilita><Cedibilita><Id>20190000277</Id><CodiceFiscale>DTRMRA48P55D539C</CodiceFiscale><ChiavePensione>700400125745081</ChiavePensione><Cognome>DTR</Cognome><Nome>MRA</Nome><DataNascita>1948-09-15</DataNascita><CodiceSede>0100</CodiceSede><DenominazioneSede>AGRIGENTO</DenominazioneSede><IndirizzoSede>VIA PICONE 20/30 - 92100 - AGRIGENTO - AG</IndirizzoSede><Importo>250.0000</Importo><DataUltimaRichiestaCedibilita>2019-01-15</DataUltimaRichiestaCedibilita><RichiedenteUltimaCedibilita>Istituto di Credito</RichiedenteUltimaCedibilita><DataScadenzaAOI>202002</DataScadenzaAOI><DataRilascio>2019-01-16</DataRilascio><Note></Note><ProtocolloINPS>INPS.TESTC1.16/01/2019.0000287</ProtocolloINPS><CodiceErrore>0</CodiceErrore><DescrizioneErrore></DescrizioneErrore></Cedibilita></DatiCedibilita><?xml version="1.0" encoding="utf-8" ?><DatiCedibilita><Cedibilita><Id>20190000277</Id><CodiceFiscale>DTRMRA48P55D539C</CodiceFiscale><ChiavePensione>700400125745081</ChiavePensione><Cognome>DTR</Cognome><Nome>MRA</Nome><DataNascita>1948-09-15</DataNascita><CodiceSede>0100</CodiceSede><DenominazioneSede>AGRIGENTO</DenominazioneSede><IndirizzoSede>VIA PICONE 20/30 - 92100 - AGRIGENTO - AG</IndirizzoSede><Importo>250.0000</Importo><DataUltimaRichiestaCedibilita>2019-01-15</DataUltimaRichiestaCedibilita><RichiedenteUltimaCedibilita>Istituto di Credito</RichiedenteUltimaCedibilita><DataScadenzaAOI>202002</DataScadenzaAOI><DataRilascio>2019-01-16</DataRilascio><Note></Note><ProtocolloINPS>INPS.TESTC1.16/01/2019.0000287</ProtocolloINPS><CodiceErrore>0</CodiceErrore><DescrizioneErrore></DescrizioneErrore></Cedibilita></DatiCedibilita>1 ?>
如何打印单个标签值? 例如:
Id = 20190000277
答案 0 :(得分:1)
所有这些行仅回显值以输出
print_r($soapClient->__getlastResponse());
$soap = print_r($soapClient->__getlastResponse());
print_r($soap);
删除上方的行,并在下方替换。要设置$ soap并获取值,请使用xml解析器,例如simplexml库
$soap = $soapClient->__getlastResponse();
$xml = simplexml_load_string($soap);
echo $xml->Cedibilita->Id; // 20190000277
答案 1 :(得分:0)
如果我是您,我会打给var_dump($soap)
。这将向您显示您必须使用的数组/对象的结构。然后,您可以对此进行深入分析,以输出所需的确切值。
例如(如果是对象):
$id = $soap->id;
print("Id=" . $id);
如果是数组:
$id = $soap['id'];
print("Id=" . $id);
如果您提供var_dump($soap)
,我应该可以向您确切显示所需的代码。
希望对您有帮助!
答案 2 :(得分:0)
您需要获取有关SOAP服务的功能和类型的信息。
<?php
...
# SOAP Client
$soapClient = new SoapClient($wsdl, array('local_cert' => $local_cert, 'trace' => 1, 'soap_version' => SOAP_1_1));
# List functions
echo 'Functions: '.'</br>';
$functions = $soapClient->__getFunctions();
foreach($functions as $item) {
echo $item.'</br>';
}
echo '</br>';
# List types
echo 'Types: '.'</br>';
$types = $soapClient->__getTypes();
foreach($types as $item) {
echo $item.'</br>';
}
echo '</br>';
...
?>
之后,根据此信息,您可以尝试读取SOAP响应。
使用您的方法,$soapClient->__getlastResponse()
将在上一次SOAP响应中收到的XML作为XML字符串返回。在这种情况下,您可以将此字符串转换为XML并读取数据:
<?php
$soap =
'<?xml version="1.0" encoding="utf-8" ?>
<DatiCedibilita>
<Cedibilita>
<Id>20190000277</Id>
<CodiceFiscale>DTRMRA48P55D539C</CodiceFiscale>
<ChiavePensione>700400125745081</ChiavePensione>
<Cognome>DTR</Cognome>
<Nome>MRA</Nome>
<DataNascita>1948-09-15</DataNascita>
<CodiceSede>0100</CodiceSede>
<DenominazioneSede>AGRIGENTO</DenominazioneSede>
<IndirizzoSede>VIA PICONE 20/30 - 92100 - AGRIGENTO - AG</IndirizzoSede>
<Importo>250.0000</Importo>
<DataUltimaRichiestaCedibilita>2019-01-15</DataUltimaRichiestaCedibilita>
<RichiedenteUltimaCedibilita>Istituto di Credito</RichiedenteUltimaCedibilita>
<DataScadenzaAOI>202002</DataScadenzaAOI>
<DataRilascio>2019-01-16</DataRilascio>
<Note></Note><ProtocolloINPS>INPS.TESTC1.16/01/2019.0000287</ProtocolloINPS>
<CodiceErrore>0</CodiceErrore>
<DescrizioneErrore></DescrizioneErrore>
</Cedibilita>
</DatiCedibilita>';
# Use this in your script. I expect, that $soapClient->__getlastResponse() returns the above string.
$soap = $soapClient->__getlastResponse();
$xml = simplexml_load_string($soap);
echo $xml->Cedibilita->Id;
?>
答案 3 :(得分:0)
嗨,我尝试这个并为我工作:
<?php
$cf = "DTRMRA48P55D539C";
$chiave = "700400125745081";
$numdoc = "AV1871102";
$tipodoc = 1;
//$numid = $_POST['numid'];
$codoper = "PCCPLA66T11L719L";
$idag = "35852";
$wsdl = "https://portalws.inps.it/ws/wsCessioneQuintoWebTest/WsInpsCessioneQuinto.asmx?WSDL";
$local_cert = "C:\\Apache24\htdocs\sirio2.pem";
$soapClient = new SoapClient($wsdl, array('local_cert' => $local_cert, 'trace' => 1, 'soap_version' => SOAP_1_1));
$result = $soapClient->RichiestaCedibilita(array('CodFiscale' => $cf, 'ChiavePensione' => $chiave, 'NumDocumento' => $numdoc, 'TipoDocumento' => 1, 'CodiceOperatore' => $codoper, 'IdentificativoAgenzia' => $idag));
$xml = simplexml_load_string($result->RichiestaCedibilitaResult);
echo ($xml->Cedibilita->Id);
?>