У меня есть требование, где я должен отправить аудиофайл в запросе SOAP в виде тега base64Binary. Когда я отправлял файл как строку в кодировке base64, все работало нормально, но SOAP снова кодирует в base64 из-за типа элемента Base64Binary.
Итак, я попытался отправить необработанный аудиофайл, прочитав запрос SOAP и надеясь, что кодирование произойдет автоматически. Но запрос так и не был создан, так как содержимое необработанного аудиофайла не может быть помещено в XML, его необходимо кодировать в base64.
PHP код для чтения файла
private function getFileData($filePath)
{
$fileHandle = fopen($filePath, 'r');
$fileSize = filesize($filePath);
$fileContents = fread($fileHandle, $fileSize);
fclose($fileHandle);
return $fileContents;
}
Тег данных файла SOAP из WSDL
<xsd:element name="fileData" type="xsd:base64Binary" minOccurs="1" maxOccurs="1" />
Я использую Zend_Soap_Client для отправки SOAP-запроса на SOAP-сервер.
Так что кто-нибудь может помочь мне в этом, чтобы найти мою ошибку в этом при отправке необработанного содержимого файла клиенту SOAP, чтобы base64Binary выполнял только кодирование, которое в настоящее время не выполняется?