.NET wcfSOAPWebサービスに情報を送信するflex/airアプリケーションでファイルアップロードを作成しようとしています。ファイルのアップロードには、イベントを示す進行状況も必要です。このサービスは、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でプロキシクラスを作成すると、FileDataのStreamオブジェクトを取得します。Flash Builder 4.7で同じことを行うと、FileDataはByteArrayとして解釈されます。クライアントでFileUploadとUrlLoaderを調べましたが、bodyメンバーセットを取得できません。私のアクションスクリプトは、これが機能していないように見えます
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からsoapサービスにストリーミングファイルをアップロードするにはどうすればよいでしょうか。どんな助けでも大歓迎です。