Я должен отправить файл в WSDL, элемент описан в WSDL, как:Отправка Zip файлов через SOAP в PHP
<s:element minOccurs="0" maxOccurs="1" name="theZipFile" type="s:base64Binary" />
Как я могу отправить файл Zip, используя SOAP клиент? Я пробовал следующее:
$client = new SoapClient($url);
$params = array("theZipFile" => "file.zip");
$response = $client->theFunction($params);
Но я не получаю ожидаемого ответа. Я попытался использовать .Net и C# со следующим кодом:
string filename = "file.zip";
FileInfo fi = new FileInfo(filename);
long numBytes = fi.Length;
FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] data = br.ReadBytes((int)numBytes);
br.Close();
fs.Close();
XElement response = client.theFunction(data);
И он работает без проблем.
Спасибо!
Где вы конвертируете поток байтов в базу 64 и проверили ли вы, что почтовый файл, отправленный в рабочий код, все еще можно открыть? Я думаю, что .NET автоматически преобразуется в base64 в отличие от PHP, где вам придется делать это вручную. –
Это должно помочь http://stackoverflow.com/questions/35879/base64-encoding-image –