PHP Мыло, генерирующее неправильный soap конверт для soap 1.2 - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь подключиться к. NET службе WCF, которая имеет soap 1.2. используя PHP soap -клиента. Я получаю сообщение

SoapFault exception: [HTTP] Cannot process the message because the content type 'text/xml; charset=utf-8' was not the expected type 'application/soap+xml; charset=utf-8'. in C:\wamp64\www\eZPackPlatform\catalog\phpsoap.php:32 Stack trace: #0 C:\wamp64\www\eZPackPlatform\catalog\phpsoap.php(32): SoapClient->__doRequest('__doRequest('__call('GetAllComponent...', Array) #3 {main}

Когда я проверяю отправленный запрос soap, он выглядит следующим образом

2000

SOAP -ENV is soap версия 1.1.

Мой PHP код указан ниже, где я указываю soap версию как SOAP_1_2

<?php
//header("Content-Type: text/xml");
ini_set("soap.wsdl_cache_enabled", "0");
$client = new SoapClientDebug("https://services.plmpack.net/PLMPackService.svc?wsdl",
   array('soap_version' => 'SOAP_1_2',
         'location'=>'https://services.plmpack.net/PLMPackService.svc/secure',
         'login'    => 'guest',
         'password' => 'guest_' ,
         'trace'      => true,
         'exceptions' => true
                                ));

if ($client != null){
    echo "soap client created\n"; 
    try{
        $component_array = $client->GetAllComponents(array('index' => 0,
           'length' => 200,
           'number' => 0
           ));
        print_r(  $component_array ); 
    } catch (SoapFault $exception) { 
    echo $exception;
    }
}

class SoapClientDebug extends SoapClient
{
    public function __doRequest($request, $location, $action, $version, $one_way = NULL) 
    {
        file_put_contents('soap_log.txt', $request);

        return parent::__doRequest($request, $location, $action, $version);
    }
}
...