__soapCall возвращает ошибку авторизации - PullRequest
0 голосов
/ 20 октября 2011

Я пытаюсь обработать запрос на мыло, и он возвращает мне ошибку аутентификации. Итак, я протестировал запрос SOAP в инструменте SOAP UI и обнаружил, что он дает ожидаемый результат. Я делаю что-то не так в моем коде.

/*create headers*/
$param= new  SoapVar(array('Authorization' => $username,'password'=>$password), SOAP_ENC_OBJECT); 
$header = new SoapHeader('ns1', 'Authorization', $param,false);
$client->__setSoapHeaders($header);

Позвонить

try{    $id=$client->__soapCall('methodname',array('filename'=>$filename,'contents'=>base64_encode($content));
    echo "Received a id:".$id;
    echo '<pre>';
    var_dump($client->__getLastRequestHeaders());
    var_dump($client->__getLastRequest());
}
catch(SoapFault $e){
        echo "Exception\n";
        var_dump($e);
}

Заголовок запроса следующим образом

string(207) "POST /services/refresh HTTP/1.1
Host: cpanel.myproject.com
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.2.11
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
Content-Length: 1410

В SOAP UI заголовки, которые я заметил, также содержат следующую строку

Чт, 20 октября 13:41:37 IST 2011: ОТЛАДКА: >> "Авторизация: Basic XXXX [\ r] [\ n]"

Я просто пытаюсь добавить этот заголовок в моё мыло. Любая идея, как я могу это сделать ...

Привет

1 Ответ

0 голосов
/ 20 октября 2011

Вот пример вызова с заголовком:

ini_set("soap.wsdl_cache_enabled", "0");
$httpsheader = new myHeader();
$header = $httpsheader->getHeader();

try 
{
    parent::__construct($wsdl, $header);
}
catch (Exception $e) 
{
    $this->_handleError($e);
}


class myHeader
{   

    function myHeader()
    {

            $this->header = array(
                'proxy_host' => $proxy_host, 
                'proxy_port' => (int)$proxy_port, 
                'proxy_login' => $proxy_login, 
                'proxy_password' => $proxy_pass, 
                'login' => $merchantID,
                'password' => $accessKey,
                'style' => SOAP_DOCUMENT,
                'trace' => 1,
                'use' => SOAP_LITERAL);

    }

    function getHeader()
    {
        return $this->header;
    }
}
...