Неустранимая ошибка: исключение Uncaught SoapFault: [HTTP] Не удалось отправить HTTP SOAP - PullRequest
0 голосов
/ 14 февраля 2019

Я написал PHP-скрипт, который выполняет запрос SOAP для отправки некоторых данных и загрузки base64binary с использованием soap_client в PHP 7.2.14.

После выполнения запроса SOAP с небольшим количеством данных (маленькийфайл <60 кб) запрос пройдет.Если я добавлю файл большего размера для загрузки (> 80 Кб), запрос не будет выполнен и выдаст эту ошибку:

Fatal error: Uncaught SoapFault exception: [HTTP] Failed Sending HTTP SOAP.

Я проверил default_socket_timeout на сервере и увеличил его.Я также попробовал base64_econde строку, но SOAP уже кодирует ее самостоятельно.

Мой код:

//WS SETTINGS
$wsdl = "https://ws.eye-move.nl/WoningDocument.asmx?WSDL";
$ns = 'http://ws.eye-move.nl/WoningDocument';


// SOAP client
$params = array ('trace' => 1, 'exceptions' => 1, "connection_timeout" => 180);
$client = new SoapClient($wsdl, $params);

//COLLECT DATA FOR UPLOADING
$RecID = '34244701';
$filename = 'Testfile-'.date("Y-m-d H:i:s").'.pdf';
$filecontent = file_get_contents('temp/test.pdf');

//SET HEADERS
$headerBody = array(
    'Username' => $login,
    'Password' => $password,
    'Customer' => $partnerID
);

$header = new SoapHeader($ns, 'AuthHeader', $headerBody);
$client->__setSoapHeaders($header);

$data = array(
    'WoningID' => $RecID,
    'WoningDocumentBestand' => array('Bestandsnaam'=>$filename,'Bestand'=>$filecontent),
    'WoningDocumentType' => 'DocumentType',
    'Omschrijving' => 'Description',
    'Volgorde' => '1'
);
$result = $client->Add(array('Gegevens' => $data));

Полное исключение:

Fatal error: Uncaught SoapFault exception: [HTTP] Failed Sending HTTP SOAP request in /var/www/vhosts/acceptatie.nl/httpdocs/sendrapport3.php:65 Stack trace: #0 [internal function]: SoapClient->__doRequest('<?xml version="...', 'ws.eye-m...', 'ws.eye-m...', 1, 0) #1 /var/www/vhosts/acceptatie.nl/httpdocs/sendrapport3.php(65): SoapClient->__call('Add', Array) #2 {main} thrown in /var/www/vhosts/acceptatie.nl/httpdocs/sendrapport3.php on line 65 

Это нижекод, который я написал в строке 65:

$result = $client->Add(array('Gegevens' => $data));

Любая идея, почему небольшие файлы будут отправлены успешно, а большие файлы (> 80 Кбайт) потерпит неудачу?

Большое спасибо!

1 Ответ

0 голосов
/ 14 февраля 2019

Я столкнулся с той же проблемой и попробовал следующее решение, и оно сработало для меня.Но я не знаю, какие значения вы передали в заголовке.Пожалуйста, добавьте

#) libxml_disable_entity_loader(false); // above the WS SETTINGS and try it.
...