Neden PHP'nin SoapClient vücut daha başlığı için farklı bir ad alanı yaratıyor?

0 Cevap php

Ben eWay sunucuyla iletişim kurmak için çalışıyor ve biz farklı bir API geçmek için ihtiyacı kadar sona kadar her şey çalışma vardı ediyorum. Sorun SoapClient Açıkçası, bana herhangi bir sonuç almazsa, sonra vücuttan başlığı için farklı bir ad alanı (yani kimlik içerir), yaratıyor olmasıdır. Bunun yerine, ben bu kimlik bilgileri olması gerekir diyerek eWay sunucularını olsun.

İşte benim kod:

   $client = new SoapClient($url.'?WSDL', array('trace'=>TRUE));

   // Set our SOAP Headers for authentication
    $header_body = array(
        'eWAYCustomerID'    => $gateway['customer_id'],
        'Username'          => $gateway['username'],
        'Password'          => $gateway['password']
    );

    $header_var = new SoapVar($header_body, SOAP_ENC_OBJECT);       
    $header = new SOAPHeader('http://www.eway.com.au/gateway/managedpayment', 'eWAYHeader', $header_body);
    //$client->__setSoapHeaders($header);

    try {
        $response = $client->__soapCall($action, $xml, null, $header);
    } catch (SoapFault $e)
    {
        echo 'SOAP Fault: '. $e->getMessage()."<br>\n";
    }

Gördüğünüz gibi, ben hiç şans ile, ve başlık için bir SoapVar kullanmadan denedim.

İşte yaratılıyor XML isteği var:

<soap-env:envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://www.eway.com.au/gateway/managedpayment" xmlns:ns2="http://www.eway.com.au/gateway/managedpayment">
<soap-env:header>
    <ns2:ewayheader>
        <ewaycustomerid>87654321</ewaycustomerid>
        <username>test@eway.com.au</username>
        <password>test123</password>
    </ns2:ewayheader>
</soap-env:header>
<soap-env:body>
    <ns1:createcustomer>...</ns1:createcustomer>

0 Cevap