Я пытаюсь создать загрузку файла в приложении Flex / Air, которое отправляет информацию в веб-сервис .NET wcf SOAP. Загрузка файла также должна иметь события, указывающие на прогресс. Служба использует Stream как MessageBodyMember, чтобы разрешить потоковую загрузку. Мой ввод выглядит примерно так:
[MessageContract]
public class SendFileRequestMessage : IDisposable
{
public string UserName;
[MessageBodyMember(Order = 1)]
public Stream FileData;
}
а сервис выглядит так:
public interface IFileTransferService
{
[OperationContract]
SendFileResponseMessage SendFile(SendFileRequestMessage request);
}
Теперь, когда я создаю прокси-класс в VS2010, я получаю объект Stream для FileData. Если я сделаю то же самое в Flash Builder 4.7, FileData будет интерпретироваться как ByteArray. Я уже изучал FileUpload и UrlLoader в своем клиенте, но не могу получить набор членов тела. Мой сценарий действий теперь выглядит так: не работает
var dataToSave:XML = <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:q0="http://mystuff/uploadservice/v1"><soapenv:Body><q0:SendFile/></soapenv:Body></soapenv:Envelope>
var request:URLRequest = new URLRequest("http://localhost:31454/Uploadhandler.svc");
request.requestHeaders = new Array(new URLRequestHeader("SOAPAction", "http://mystuff/uploadservice/v1/IFileTransferService/SendFile"));
request.data = dataToSave;
request.contentType = "text/xml; charset=utf-8";
request.method = URLRequestMethod.POST;
var loader:URLLoader = new URLLoader();
loader.load(request);
Итак, как можно загрузить потоковый файл в службу мыла из Flex? Любая помощь будет очень признательна.