0

When I use SoapClient I can add custom header (X-Api-Key) in stream context:

$stream = array('stream_context' => stream_context_create(array(
            'http' => array(
                'header' => 'Content-Type: application/soap+xml; charset=utf-8; X-Api-Key: XXXXX'
            ),
        )));

$soapOptions = array(
        'trace'         => 1,
        'exceptions'    => 1,
        'login'         => $this->AUTH_BASIC_USER,
        'password'      => $this->AUTH_BASIC_PASS,
        'soap_version'  => SOAP_1_2,
        'use'           => SOAP_LITERAL,
    );

$client = new \SoapClient($this->SOAP_URL . 'customer?wsdl=single', $soapOptions + $stream);

It works fine. I can check available methods so client object works and can load WSDL.

But if I run any method, X-Api-Key header is missing (and I don't know how to add it) so I'm getting 401 error.

If I check request headers, X-Api-Key is missing:

POST /ws/soap/v1/customer HTTP/1.1\r\n
Host: api-test.XXX.com\r\n
Connection: Keep-Alive\r\n
User-Agent: PHP-SOAP/8.0.3\r\n
Content-Type: application/soap+xml; charset=utf-8; action="create"\r\n
Content-Length: 605\r\n
Authorization: Basic XXX=\r\n

How can I add custom http header to all request on this client object?

1 Answer 1

1

Try to use "\r\n" as separator in your 'header' key:

Your current value

Content-Type: application/soap+xml; charset=utf-8; X-Api-Key: XXXXX

should be

Content-Type: application/soap+xml\r\ncharset=utf-8\r\nX-Api-Key: XXXXX

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.