【发布时间】:2015-02-26 02:25:31
【问题描述】:
我必须将文件发送到 WSDL,该元素在 WSDL 中描述为:
<s:element minOccurs="0" maxOccurs="1" name="theZipFile" type="s:base64Binary" />
如何使用 SOAP 客户端发送 Zip 文件?我尝试了以下方法:
$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);
它可以正常工作。
谢谢!
【问题讨论】:
-
您在哪里将字节流转换为 base 64,您是否验证了在工作代码中发送的 zip 文件仍然可以打开?我认为 .NET 会自动转换为 base64,而 PHP 则必须手动转换。
标签: c# php web-services soap wsdl