Ошибка потребления webservice с SoapClient PHP


я пытаюсь использовать веб-сервис с SoapClient PHP, я провел несколько тестов, но единственный ответ, который я получаю, - это следующая ошибка:

The server was unable to process the request due to an internal ошибка. For more information about the ошибка, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework SDK documentation and inspect the server trace logs.

разработчики webservice говорят мне, что это не ошибка их. Я был бы признателен кому-то, если бы вы могли помочь мне с этой ошибкой, так как у меня нет большого опыта работы с webservice. Заранее спасибо.

php-код выглядит следующим образом:

$WebService = "http://factulaar.grupolaar.com:9019/ClsWaybill.svc?wsdl";

$client = new SoapClient($WebService, array('trace' => 1));

$parametros = array(
    'ActualWeight' => '2',
    'Branch' => 'Quito',
    'ClientWeight' => '3',
    'Comments' => 'Testing WebService',
    'Company' => '10',
    'ContentSdtl' => 'Testing Contents',
    'CustomerId' => '01346',
    'DeclaredValue' => '100',

    'DeliveryAddress' => array(
        'AddressLine1' => 'Calle 1 22-13',
        'AddressLine2' => 'Calle 2',
        'City' => 'Cuenca',
        'Country' => 'Ecu',
        'Name' => 'Juan Pérez',
        'Phone' => '123456789',
        'State' => 'Azuay',
        'ZipCode' => '0',
    ),

    'ElectronicWeight' => '5',
    'GUIANumber' => '',
    'Height' => '10',
    'Idtrx' => '75',
    'Length' => '10',
    'Password' => 'TEST',
    'PickUpConsignee' => '52307',
    'PickupRequestDate' => '05/20/2016',
    'Pieces' => '1',
    'Service' => 'CRG',
    'UnitDimension' => 'CM',
    'Username' => 'WEBSERVICE',
    'Warehouseid' => 'QUITO',
    'Warehouseidloc' => '',
    'WeightUnit' => 'KG',
    'Width' => '10',
);

try
{
    $WS = new SoapClient($WebService, array("trace" => 1));
    $result = $WS->CreateWayBill($parametros1);
}
catch(SoapFault $exception)
{
    echo $exception->getMessage();
}
Author: Juan Pinzón, 2016-06-06

1 answers

Прежде всего, вы не указываете, какую версию протокола SOAP вы используете 1_1 или 1_2. Хотя это может быть не проблема. Потом я думаю, что проблема в твоем исправлении. Если WS находится в .NET, вы не можете отправлять ему массивы массивов, этого не существует в.NET. Для того, чтобы они общались, это должно быть так:

$WebService= new SoapClient("http://factulaar.grupolaar.com:9019/ClsWaybill.svc?wsdl", 
                    array('trace' => 1,'soap_version' => SOAP_1_1));
$arreglo=array('parametro1'=>$parametro1,'parametro2'=>$parametro2, ...);//PuedenSerVarios
$respuesta = $WebService->__soapCall('CreateWayBill',array($arreglo));

Я все еще мог бы иметь что-то этот код, так как я не знаю документации, но я думаю, что это будет более или менее так. Если вы отправляете массив, он должен идти как вектор, так как.Net нет понимает массивы PHP.

Отредактировано:

Посмотрите, я думаю, что это было бы так (вы должны создать класс WayBill с этими свойствами), а затем:

$WebService= new SoapClient("http://factulaar.grupolaar.com:9019/ClsWaybill.svc?wsdl", 
                    array('trace' => 1,'soap_version' => SOAP_1_1));    
$wayBill=new WayBill(); 
$wayBill->ActualWeight=$valor1; 
$wayBill->Branch=$valor2; 
//etc. Así con el resto de los campos 
$arreglo=array('objWayBillDetails'=>$wayBill);
$respuesta = $WebService->__soapCall('CreateWayBill',array($arreglo));
 2
Author: abrahamhs, 2016-06-08 14:48:23