Как отправить файлы из клиента soap lite в сервис wcf? - PullRequest
1 голос
/ 23 ноября 2011

У меня есть служба wcf, настроенная для приема основных http-привязок.Я хочу отправить файл Excel из Perl soap Lite в мой сервис wcf.Какой самый простой способ отправить этот файл?Я смотрел на mtom / mime, но они кажутся сложными, и я не знаю, использует ли мыло lite mtom / mime.Я также думал об использовании строки base64 для кодирования файла, а затем его отправки.Если я использую кодирование base64, какой тип данных мне следует указать в качестве параметра контракта операции?

Ответы [ 2 ]

1 голос
/ 23 ноября 2011

MK. оказывается, ты прав. Я использовал приведенный ниже код для чтения в файле "in.xls" как двоичного файла в $ data, затем добавил его в качестве значения в soap lite, и он автоматически преобразовался в байт [] в моей службе wcf.

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>

Спасибо

1 голос
/ 23 ноября 2011

byte [] будет автоматически кодироваться в формате base64 и является наиболее надежным и совместимым способом отправки двоичных вложений.Я бы не стал использовать что-либо, если бы я полностью не контролировал обе стороны разговора (и если бы я всегда контролировал обе стороны, я бы не использовал SOAP).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...