如何在Java客户端中使用WCF Stream服务?

时间:2012-11-22 16:40:37

标签: java wcf stream interop

我正在开发一个java客户端来使用下面的WCF服务。由于WCF服务使用Stream技术,我也希望在java客户端代码中使用stream技术来减少内存使用。有没有人可以提供关于如何写它的建议?感谢。

namespace TmpWcfStream
{
    [MessageContract]
    public class InputMessage
    {
        [MessageHeader(MustUnderstand = true)]
        public string TranName { get; set; }

        [MessageBodyMember(Order=1)]
        public Stream FileData { get; set; }
    }

    [MessageContract]
    public class OutputMessage
    {
        [MessageBodyMember(Order = 100)]
        public bool Success { get; set; }

        [MessageBodyMember(Order = 200)]
        public string ErrorMsg  { get; set; }
    }
}

namespace TmpWcfStream
{
    public class UploadDataSvc : UploadSvcContract
    {
        private const int bufferLen = 4096;

        public OutputMessage UploadData(InputMessage msg)
        {
            OutputMessage outputMsg = new OutputMessage { ErrorMsg = string.Empty, Success = true };

            try
            {
                Stream inputStream = msg.FileData;
                String filePath = @"C:\tmp\output.txt";

                using (FileStream targetStream = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None))
                {
                    byte[] buffer = new byte[bufferLen];
                    int count = 0;
                    while ((count = inputStream.Read(buffer, 0, bufferLen)) > 0)
                    {
                        targetStream.Write(buffer, 0, count);
                    }
                }
                inputStream.Close();
            }
            catch(Exception e)
            {
                outputMsg.Success = false;
                outputMsg.ErrorMsg = e.ToString();
            }

            return outputMsg;
        }
}

0 个答案:

没有答案