SOAP + PHP: uncought SoapFault исключение

Я получаю следующую ошибку при попытке создать новый SoapClient.

Фатальная ошибка: необнаруженное исключение SoapFault: [HTTP] ошибка выборки http
заголовки в C:Program файлы
(x86)EasyPHP-5.3.9wwwprotocoloindex2.php: 61 трассировка стека: #0
[внутренняя функция]: SoapClient — > _ _ doRequest(‘http://localhos…’, «, 1, 0) #1 C:Program Файлы
(x86)EasyPHP-5.3.9wwwprotocoloindex2.php (61):
SoapClient — >_ _ call (‘solicitarProtoc…’, Array) #2 C:Program Файлы
(x86)EasyPHP-5.3.9wwwprotocoloindex2.php (61):
SoapClient — >solicitarProtocoloOperation (Array) #3 {main}
C:Program файлы (x86)EasyPHP-5.3.9wwwprotocoloindex2.php on line
61

Это файл wsdl, который я использую:

<definitions        name="solicitarProtocolo" targetNamespace="http://gp.unimed.coop.br/solicitarProtocolo/webservices/V1_00_00">
<wsdl:types>
    <xsi:schema       targetNamespace="http://gp.unimed.coop.br/solicitarProtocolo/webservices/V1_00_00">
        <xsi:import namespace="http://gp.unimed.coop.br/schemas/V1_00_00" schemaLocation="gp_Transacoes-V1_00_00.xsd" />
    </xsi:schema>
</wsdl:types>
<message name="solicitarProtocoloRequest">
    <part name="solicitarProtocoloRequest" element="gp:solicitarProtocoloWS" />
</message>
<message name="solicitarProtocoloResponse">
    <part name="solicitarProtocoloResponse" element="gp:respostasolicitarProtocoloWS" />
</message>
<message name="ErroInesperadoFault">
    <part name="ErroInesperadoFault" element="gp:erroInesperadoWS" />
</message>
<portType name="solicitarProtocoloPortType">
    <operation name="solicitarProtocoloOperation">
        <input message="tns:solicitarProtocoloRequest" />
        <output message="tns:solicitarProtocoloResponse" />
        <fault name="ErroInesperadoFault" message="tns:ErroInesperadoFault" />
    </operation>
</portType>
<binding name="solicitarProtocoloBinding" type="tns:solicitarProtocoloPortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
    <operation name="solicitarProtocoloOperation">
        <soap:operation soapAction="" />
        <input>
            <soap:body use="literal" />
        </input>
        <output>
            <soap:body use="literal" />
        </output>
        <fault name="ErroInesperadoFault">
            <soap:fault name="ErroInesperadoFault" use="literal" />
        </fault>
    </operation>
</binding>
<service name="solicitarProtocolo">
    <port name="solicitarProtocoloPort" binding="tns:solicitarProtocoloBinding">
        <soap:address location='http://localhost/protocolo/index2.php' />
    </port>
</service>

И вот мой php файл:

<?php
set_time_limit(0);

$conf=array(
    'trace' =>true,
);

$client = new SoapClient('solicitarProtocolo_V1_00_00.wsdl',$conf);
$client->__setLocation('http://localhost/protocolo/index2.php');


$result = $client->solicitarProtocoloOperation(
                                array(
                                    'cabecalhoTransacao'    => array(   
                                                                        'codigoTransacao'               => '001',
                                                                        'tipoCliente'                   => 'UNIMED',
                                                                        'codigoUnimedOrigemMensagem'    => '1234',
                                                                        'codigoUnimedDestinoMensagem'   => '1234',
                                                                        'numeroRegistroANS'             => '348406'
                                                                    ),
                                    'solicitarProtocolo'    => array(   
                                                                        'numeroTransacaoPrestadora'     => '0000000001',
                                                                        'dataGeracao'                   => date("Y-m-d"),
                                                                        'idUsuario'                     => 'User',
                                                                        'identificacaoBeneficiario'     => array(
                                                                                                                    'codigoUnimed'          => '1234',
                                                                                                                    'codigoIdentificacao'   => '123123123123'
                                                                                                                ),
                                                                        'dadosBeneficiario'             => array(
                                                                                                                    'nomeBenef'     => 'Beneficiario Teste',
                                                                                                                    'cdCPF'         => '12312312312',
                                                                                                                    'ddd'           => '84',
                                                                                                                    'telefone'      => '988888888',
                                                                                                                    'email'         => 'email@email.com'
                                                                                                                ),
                                                                        'identificacaoManifestacao'     => array(
                                                                                                                    'tipoManifestacao'      => '1', 
                                                                                                                    'tipoCategoria'         => '1',
                                                                                                                    'tipoSentimento'        => '1'
                                                                                                                ),
                                                                        'idresposta'                    => '',
                                                                        'numeroTransacaoIntercambio'    => '',
                                                                        'numeroProtocoloAnterior'       => '',
                                                                        'mensagemLivre'                 => $texto,
                                                                        'numeroVersaoProtocolo'         => '001'
                                                                    ),
                                    'hash'                  => 'arquivo.xml'
                                ));

echo 'Response: ';
print_r($result);
?>

1 ответ

  1. В конструкторе для SoapClient предполагается указать URL не файл на диске.