我设置了一个wcf服务来接受基本的http绑定。我想从perl soap lite发送一个excel文件到我的wcf服务。发送此文件的最简单方法是什么?我看着mtom / mime,但它们看起来很复杂,我不知道soap lite是否使用mtom / mime。我还在考虑使用base64字符串来编码文件,然后发送它。如果我使用base64编码,我应该指定什么数据类型作为操作契约参数?
答案 0 :(得分:1)
byte []将自动进行base64编码,是发送二进制附件的最强大和兼容的方式。我不会使用任何东西,除非我完全控制双方的谈话(如果我总是控制双方,我就不会使用SOAP)。
答案 1 :(得分:1)
MK。事实证明你是对的。我使用下面的代码将文件“in.xls”作为二进制文件读入$ data,然后将其作为soap lite中的值添加,并自动转换为我的wcf服务上的byte []。
open FHDL, "in.xls" or die $!;
binmode FHDL;
my ($buffer, $data, $n);
while (($n = read FHDL, $buffer, 4) != 0) {
print "$n bytes read\n";
$data .= $buffer ;
}
close FHDL;
$logisticOrder->attachment($data);
我只需要增加主机上的字节数组大小。
<binding name="NetTcpBinding_ImageResizerServiceContract" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
hostNameComparisonMode="StrongWildcard" listenBacklog="10"
maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="10"
maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
<reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />
</binding>
谢谢